【问题标题】:angular - mat-slide-toggle is not visible角度 - mat-slide-toggle 不可见
【发布时间】:2018-07-18 22:39:18
【问题描述】:

问题

mat-slide-toggle 不可见。

我正在尝试从下面的 url https://material.angular.io/components/autocomplete/examples 实现这个示例。

testcomponent.html

<mat-slide-toggle
[checked]="stateCtrl.disabled"
(change)="stateCtrl.disabled ? stateCtrl.enable() : stateCtrl.disable()">
Disable Input?

app.module.ts

                        import { BrowserModule } from '@angular/platform-browser';
                        import { NgModule,Component, ElementRef, ViewChild,Pipe,PipeTransform,CUSTOM_ELEMENTS_SCHEMA  } from '@angular/core';
                        import { FormsModule,ReactiveFormsModule } from '@angular/forms';
                        import { HttpModule } from '@angular/http';


                        import { AppComponent } from './app.component';

                        //import service libraries declare all services used in project here//
                        import { HeroService } from './hero.service';
                        import { UserService } from './user.service';
                        import { AlertService } from  './alert.service';
                        import {AuthenticationService } from './authentication.service';
                        import { ApiDashboard } from './api-dashboard';
                        import { ApiDashboardDataService } from './api-dashboard-data.service';
                        import {FormService} from './form.service';
                        import {UserRegistrationService} from './user-registration.service';
                        //services closed//

                        //import {DataTableModule} from "angular2-datatable";

                        import { HeroDetailComponent } from './hero-detail/hero-detail.component';
                        import { HeroesComponent } from './heroes/heroes.component';
                        import { DashboardComponent } from './dashboard/dashboard.component';
                        import {RouterTestingModule} from '@angular/router/testing';
                        import { AppRoutingModule }     from './app-routing/app-routing.module';

                        // used to create fake backend
                        //import { fakeBackendProvider } from './helpers/fake-backend';
                        import { MockBackend, MockConnection } from '@angular/http/testing';
                        import { BaseRequestOptions } from '@angular/http';
                        //import { routing }        from '../app-routing';
                        import { AuthGuard } from './auth.guard';

                        // Imports for loading & configuring the in-memory web api

                        import { InMemoryWebApiModule } from 'angular-in-memory-web-api';
                        import { InMemoryDataService }  from './in-memory-data.service';
                        import { HeroSearchComponent } from './hero-search/hero-search.component';
                        import { MaterialDashboardComponent } from './material-dashboard/material-dashboard.component';
                        //import {MatSidenavModule} from '@angular/material';
                        import { UserComponent } from './user/user.component';
                        import {Http, Response} from '@angular/http';
                        import {LoginComponent} from './login/login.component';
                        import { AlertComponent } from './alert/alert.component';
                        import { RegisterComponent } from './register/register.component';
                        //import {MatMenuModule} from '@angular/material';
                        //component for input fields
                        //import {MatInputModule} from '@angular/material';
                        import { HomeComponent } from './home/home.component';

                        import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
                        import {CdkTableModule} from '@angular/cdk/table';
                        import { DataTablesModule } from 'angular-datatables';

                        //import { MaterialModule,MatAutocompleteModule, MatFormFieldModule } from '@angular/material';
                        import { MatFormFieldModule } from '@angular/material';
                        import {MATERIAL_COMPATIBILITY_MODE} from '@angular/material';

                        import {
                        MatAutocompleteModule,
                        MatButtonModule,
                        MatButtonToggleModule,
                        MatCardModule,
                        MatCheckboxModule,
                        MatChipsModule,
                        //MatCoreModule,
                        MatDatepickerModule,
                        MatDialogModule,
                        MatExpansionModule,
                        MatGridListModule,
                        MatIconModule,
                        MatInputModule,
                        MatListModule,
                        MatMenuModule,
                        MatNativeDateModule,
                        MatPaginatorModule,
                        MatProgressBarModule,
                        MatProgressSpinnerModule,
                        MatRadioModule,
                        MatRippleModule,
                        MatSelectModule,
                        MatSidenavModule,
                        MatSliderModule,
                        MatSlideToggleModule,
                        MatSnackBarModule,
                        MatSortModule,
                        MatTableModule,
                        MatTabsModule,
                        MatToolbarModule,
                        MatTooltipModule,
                        } from '@angular/material';
                        //import {MenuIconsExample} from './menu-icons-example';
                        //import {HttpModule} from '@angular/http';

                        import { ApiDashboardComponent } from './api-dashboard/api-dashboard.component';
                        import { ApiDashboardformComponent } from './api-dashboardform/api-dashboardform.component';
                        import { EditApiDashboardComponent } from './edit-api-dashboard/edit-api-dashboard.component';
                        import { MaterialThemeComponent } from './material-theme/material-theme.component';
                        import { LoginFosUserandRestBundleComponent } from './login-fos-userand-rest-bundle/login-fos-userand-rest-bundle.component';
                        import { LoginuserbundleComponent } from './loginuserbundle/loginuserbundle.component';
                        import { FormGroup, FormBuilder } from '@angular/forms';
                        import { MaterialTestthemeComponent } from './material-testtheme/material-testtheme.component';

                        //import {FlashMessagesModule} from 'angular2-flash-messages/module';

                        //import {Mat2Module} from 'Mat2';
                        //import {HttpModule} from '@angular/http';
                        //import {CdkTableModule} from '@angular/cdk';
                        @NgModule({
                        declarations: [
                        AppComponent,
                        HeroDetailComponent,
                        HeroesComponent,
                        DashboardComponent,
                        HeroSearchComponent,
                        MaterialDashboardComponent,
                        UserComponent,
                        LoginComponent,
                        AlertComponent,
                        RegisterComponent,
                        HomeComponent,
                        ApiDashboardComponent,
                        ApiDashboardformComponent,
                        EditApiDashboardComponent,
                        MaterialThemeComponent,
                        LoginFosUserandRestBundleComponent,
                        LoginuserbundleComponent,
                        MaterialTestthemeComponent

                        //MenuIconsExample
                        //AppRoutingModule
                        ],

                        imports: [
                        BrowserModule,
                        FormsModule,
                        HttpModule,
                        RouterTestingModule,
                        InMemoryWebApiModule.forRoot(InMemoryDataService, {passThruUnknownUrl: true}), // fake in memory API simulation
                        // InMemoryWebApiModule.forRoot(InMemoryDataService),
                        AppRoutingModule,
                        MatSidenavModule,
                        MatInputModule,
                        MatMenuModule,
                        BrowserAnimationsModule,
                        MatTableModule,
                        CdkTableModule,
                        DataTablesModule,
                        //MaterialModule,
                        ReactiveFormsModule,
                        MatAutocompleteModule, 
                        MatFormFieldModule,

                        //Mat2Module

                        ],
                        //exports: [MatSidenavModule,MatInputModule,MatMenuModule],
                        exports: [
                        CdkTableModule,
                        MatAutocompleteModule,
                        MatButtonModule,
                        MatButtonToggleModule,
                        MatCardModule,
                        MatCheckboxModule,
                        MatChipsModule,
                        //MatCoreModule,
                        MatDatepickerModule,
                        MatDialogModule,
                        MatExpansionModule,
                        MatGridListModule,
                        MatIconModule,
                        MatInputModule,
                        MatListModule,
                        MatMenuModule,
                        MatNativeDateModule,
                        MatPaginatorModule,
                        MatProgressBarModule,
                        MatProgressSpinnerModule,
                        MatRadioModule,
                        MatRippleModule,
                        MatSelectModule,
                        MatSidenavModule,
                        MatSliderModule,
                        MatSlideToggleModule,
                        MatSnackBarModule,
                        MatSortModule,
                        MatTableModule,
                        MatTabsModule,
                        MatToolbarModule,
                        MatTooltipModule,
                        ],
                        schemas: [CUSTOM_ELEMENTS_SCHEMA],
                        //declare your service  here 
                        providers: [HeroService,UserService,AlertService,AuthGuard,

                        AuthenticationService,
                        UserService,
                        ApiDashboard,
                        ApiDashboardDataService,
                        FormService,
                        UserRegistrationService,
                        FormBuilder,

                        // providers used to create fake backend
                        //  fakeBackendProvider,
                        MockBackend,
                        BaseRequestOptions],
                        bootstrap: [AppComponent]
                        })
                        export class AppModule { }

ng 版本

            OS: win32 x64
            Angular: 4.4.6
            ... animations, common, compiler, compiler-cli, core, forms
            ... http, language-service, platform-browser
            ... platform-browser-dynamic, router, tsc-wrapped

            @angular/animation: 4.0.0-beta.8
            @angular/cdk: 2.0.0-beta.12
            @angular/cli: 1.6.7
            @angular/material: 2.0.0-beta.12
            @angular-devkit/build-optimizer: 0.0.42
            @angular-devkit/core: 0.0.29
            @angular-devkit/schematics: 0.0.52
            @ngtools/json-schema: 1.1.0
            @ngtools/webpack: 1.9.7
            @schematics/angular: 0.1.17
            typescript: 2.7.1
            webpack: 3.10.0
  • 我尝试从 index.html 中的 cdn 路径加载hammer.js

       <script src="https://ajax.googleapis.com/ajax/libs/hammerjs/2.0.8/hammer.min.js"></script
    
  • 我也有

     import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
    

问题

  • 无法查看前端的滑动切换。

快照。

  • 任何人都可以建议我缺少什么虽然我是新的角度材料。

  • 欢迎提出任何建议。

【问题讨论】:

    标签: angular typescript angular-material


    【解决方案1】:

    在您的模块定义中,您忘记在 imports 部分添加 MatSlideToggleModule(您正在导入文件,但您的应用程序不使用它)并且您需要 BrowserAnimationsModule:

    @NgModule({
    declarations: [
        AppComponent,
        HeroDetailComponent,
        HeroesComponent,
        DashboardComponent,
        HeroSearchComponent,
        MaterialDashboardComponent,
        UserComponent,
        LoginComponent,
        AlertComponent,
        RegisterComponent,
        HomeComponent,
        ApiDashboardComponent,
        ApiDashboardformComponent,
        EditApiDashboardComponent,
        MaterialThemeComponent,
        LoginFosUserandRestBundleComponent,
        LoginuserbundleComponent,
        MaterialTestthemeComponent
    
        //MenuIconsExample
        //AppRoutingModule
    ],
    
    imports: [
        BrowserModule,
        FormsModule,
        HttpModule,
        RouterTestingModule,
        InMemoryWebApiModule.forRoot(InMemoryDataService, { passThruUnknownUrl: true }), // fake in memory API simulation
        // InMemoryWebApiModule.forRoot(InMemoryDataService),
        AppRoutingModule,
        MatSidenavModule,
        MatInputModule,
        MatMenuModule,
        BrowserAnimationsModule,
        MatTableModule,
        CdkTableModule,
        DataTablesModule,
        //MaterialModule,
        ReactiveFormsModule,
        MatAutocompleteModule,
        MatFormFieldModule,
        MatSlideToggleModule, // here otherwise it's not possible to use the component mat-slide-toggle defined in this module
        BrowserAnimationsModule
    ],
    //exports: [MatSidenavModule,MatInputModule,MatMenuModule],
    exports: [
        CdkTableModule,
        MatAutocompleteModule,
        MatButtonModule,
        MatButtonToggleModule,
        MatCardModule,
        MatCheckboxModule,
        MatChipsModule,
        //MatCoreModule,
        MatDatepickerModule,
        MatDialogModule,
        MatExpansionModule,
        MatGridListModule,
        MatIconModule,
        MatInputModule,
        MatListModule,
        MatMenuModule,
        MatNativeDateModule,
        MatPaginatorModule,
        MatProgressBarModule,
        MatProgressSpinnerModule,
        MatRadioModule,
        MatRippleModule,
        MatSelectModule,
        MatSidenavModule,
        MatSliderModule,
        MatSlideToggleModule,
        MatSnackBarModule,
        MatSortModule,
        MatTableModule,
        MatTabsModule,
        MatToolbarModule,
        MatTooltipModule,
    ],
    schemas: [CUSTOM_ELEMENTS_SCHEMA],
    //declare your service  here 
    providers: [HeroService, UserService, AlertService, AuthGuard,
    
        AuthenticationService,
        UserService,
        ApiDashboard,
        ApiDashboardDataService,
        FormService,
        UserRegistrationService,
        FormBuilder,
    
        // providers used to create fake backend
        //  fakeBackendProvider,
        MockBackend,
        BaseRequestOptions],
    bootstrap: [AppComponent]
    })
    export class AppModule { }
    

    您没有看到任何错误,因为您使用了

    schemas: [CUSTOM_ELEMENTS_SCHEMA]
    

    您没有提供您的 css,但您还需要在您的样式中导入一个材质主题。(s)css,例如:

    @import '~@angular/material/prebuilt-themes/deeppurple-amber.css';
    

    你可以在这里找到一个简单的例子https://stackblitz.com/edit/angular-eszrpl

    【讨论】:

    • 太好了,你只需要导入 MatSlideToggleModule 和 BrowserAnimationsModule
    • 我还在 app 模块中导入了 MatSlideToggleModule 和 BrowserAnimationsModule,正如您在我更新的代码中看到的那样。
    • 不,你没有把它放在导出部分,但没有放在导入部分
    • 但是感谢您指导调试问题的帮助,我已经评论了架构:[CUSTOM_ELEMENTS_SCHEMA] 现在角度显示错误
    • 仔细查看我提供的更新代码。
    【解决方案2】:

    今天,我在 angular.json 中使用这个主题时遇到了同样的问题:

    "styles": [
       "./node_modules/@angular/material/prebuilt-themes/deeppurple-amber.css",
        "src/styles.css"
     ],
    

    我的显示器或主题本身或其他东西有问题,但是当我将主题更改为靛蓝粉红色(如下所示)时,滑块变得明显可见,无需任何额外努力:

    "styles": [
       "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css",
       "src/styles.css"
     ],
    

    目前我并不担心主题,但考虑到分享,因为我一直在寻找解决方案以了解为什么滑块不可见。我的 package.json 中的依赖项如下所示:

     "dependencies": {
        "@angular/animations": "~11.2.7",
        "@angular/cdk": "^11.2.7",
        "@angular/common": "~11.2.7",
        "@angular/compiler": "~11.2.7",
        "@angular/core": "~11.2.7",
        "@angular/forms": "~11.2.7",
        "@angular/material": "^11.2.7",
        "@angular/platform-browser": "~11.2.7",
        "@angular/platform-browser-dynamic": "~11.2.7",
        "@angular/router": "~11.2.7",
        "rxjs": "~6.6.0",
        "tslib": "^2.0.0",
        "zone.js": "~0.11.3"
      },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-08
      • 2019-09-16
      • 1970-01-01
      • 2019-08-17
      • 1970-01-01
      • 2019-01-27
      • 2019-03-23
      • 1970-01-01
      相关资源
      最近更新 更多