我想利用MatSnackBar在事件完成时显示通知。我在我的app模块中导入了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)
我使用角度材料5.0.0,我是否需要使用其他版本才能使用MatSnackBar?
答案 0 :(得分:19)
您需要导入
import { MatSnackBarModule } from "@angular/material";
并在导入
下添加@NgModule({
imports: [
MatSnackBarModule,
],
providers: [
],
})
参考 issue
答案 1 :(得分:0)
这是对我有用的东西
(在出现诸如File 'angular/app/node_modules/@angular/material/index.d.ts' is not a module.
在MatSnackBarModule
中导入app.module.ts
:
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
],
以及使用它的地方,例如在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...
});
}
}