【问题标题】:Unexpected value 'MatSnackBar' imported by the module 'AppModule'. Please add a @NgModule annotation模块“AppModule”导入的意外值“MatSnackBar”。请添加@NgModule 注释
【发布时间】:2018-01-07 05:01:51
【问题描述】:

我想使用 MatSnackBar 来显示事件完成的通知。我在我的应用模块中导入了 MatSnackBar,下面是我的 app.module.ts

...
import { MatSnackBar,
    MatSnackBarConfig, ...
} from '@angular/material';
...

@NgModule({
    declarations: [...],
    imports: [MatSnackBar, MatSnackBarConfig, ...],
    providers: [...],
    bootstrap: [...],
    entryComponents: [...]
})
export class AppModule {
}

下面是我的 package.json:

{
    "@angular/animations": "^5.1.0",
    "@angular/cdk": "^5.0.0",
    "@angular/cli": "^1.6.1",
    "@angular/common": "^5.1.0",
    "@angular/compiler": "^5.1.0",
    "@angular/compiler-cli": "^5.1.0",
    "@angular/core": "^5.1.0",
    "@angular/forms": "^5.1.0",
    "@angular/http": "^5.1.0",
    "@angular/language-service": "^5.1.0",
    "@angular/material": "^5.0.0",
    "@angular/platform-browser": "^5.1.0",
    "@angular/platform-browser-dynamic": "^5.1.0",
    "@angular/router": "^5.1.0",
    "@swimlane/ngx-charts": "^7.0.1",
    "@types/jasmine": "^2.8.2",
    "@types/jasminewd2": "^2.0.3",
    "@types/node": "^8.0.56",
    "angular2-datatable": "^0.6.0",
    "core-js": "^2.5.1",
    "d3": "^4.10.0",
    "ng-http-loader": "^0.2.0",
    "ng2-charts": "^1.6.0",
    "ng2-handsontable": "^1.0.3",
    "rxjs": "^5.5.5",
    "zone.js": "^0.8.18"
}

以下是我得到的错误:

compiler.js:485 Uncaught Error: Unexpected value 'MatSnackBar' imported by the module 'AppModule'. Please add a @NgModule annotation.
    at syntaxError (compiler.js:485)
    at eval (compiler.js:15206)
    at Array.forEach (<anonymous>)
    at CompileMetadataResolver.getNgModuleMetadata (compiler.js:15189)
    at JitCompiler._loadModules (compiler.js:34226)
    at JitCompiler._compileModuleAndComponents (compiler.js:34187)
    at JitCompiler.compileModuleAsync (compiler.js:34081)
    at CompilerImpl.compileModuleAsync (platform-browser-dynamic.js:230)
    at PlatformRef.bootstrapModule (core.js:5573)
    at eval (main.ts:11)

我正在使用 Angular Material 5.0.0,是否需要使用其他版本才能使用 MatSnackBar?

【问题讨论】:

    标签: angular angular-material


    【解决方案1】:

    你需要导入

    import { MatSnackBarModule } from "@angular/material";
    

    并将其添加到导入下

    @NgModule({
        imports: [
            MatSnackBarModule,
        ],
        providers: [
    
        ],
    })
    

    推荐issue

    【讨论】:

    • 是的,我的错。添加此导入后,它工作正常,非常感谢!
    【解决方案2】:

    这是对我有用的方法:
    (在我遇到 File 'angular/app/node_modules/@angular/material/index.d.ts' is not a module. 之类的导入错误之前


    1. 在app.module.ts中导入MatSnackBarModule:

      import { NgModule } from '@angular/core';
      import { MatSnackBarModule } from '@angular/material/snack-bar'; // <= import the module: MatSnackBarMODULE
      
      @NgModule({
        declarations: [ 
       ],
      
       imports: [
           MatSnackBarModule,                                           // <= add it to import list
       ],
      


    1. 以及在哪里使用它,例如在app.component.ts:

      import { MatSnackBar } from '@angular/material/snack-bar'; // <= ⚠️ import the class with path 'material/SNACK-BAR'
      
      // […] 
      
      export class AppComponent {
      
        constructor( private _snackbar: MatSnackBar ) {     // <= add it to constructor
        }
      
        // Use it the way you like it
        fooBar() {
      
            const snack = this._snackbar.open('Hello', 'Action');
            snack
              .onAction()
              .subscribe(() => {
                // Action...
              });
         }        
      }
      



    1. 演示在StackBlitz!

    【讨论】:

      猜你喜欢
      • 2018-01-10
      • 2019-12-01
      • 2021-09-02
      • 2020-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多