我熟悉此错误,但是我只有在更新到Angular Material 6.4.7后才开始看到此错误。
我所有的模块都引用我自己的MaterialModule,该材料导出MatDialogModule。我没有为MatDialogRef设置任何提供程序-之前没有需要。
[MatDialogTitle-> MatDialogRef]有什么用?是什么意思?
在开发和生产版本中,一切似乎都可以正常工作。我不知道是什么原因造成的。
有没有办法将其追溯到某个东西?
谢谢
core.js:1673 ERROR Error: Uncaught (in promise): Error: StaticInjectorError(AppModule)[MatDialogTitle -> MatDialogRef]:
StaticInjectorError(Platform: core)[MatDialogTitle -> MatDialogRef]:
NullInjectorError: No provider for MatDialogRef!
Error: StaticInjectorError(AppModule)[MatDialogTitle -> MatDialogRef]:
StaticInjectorError(Platform: core)[MatDialogTitle -> MatDialogRef]:
NullInjectorError: No provider for MatDialogRef!
at NullInjector.push../node_modules/@angular/core/fesm5/core.js.NullInjector.get (core.js:1062)
at resolveToken (core.js:1300)
at tryResolveToken (core.js:1244)
at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (core.js:1141)
at resolveToken (core.js:1300)
at tryResolveToken (core.js:1244)
at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (core.js:1141)
at resolveNgModuleDep (core.js:8369)
at NgModuleRef_.push../node_modules/@angular/core/fesm5/core.js.NgModuleRef_.get (core.js:9057)
at resolveDep (core.js:9422)
at NullInjector.push../node_modules/@angular/core/fesm5/core.js.NullInjector.get (core.js:1062)
at resolveToken (core.js:1300)
at tryResolveToken (core.js:1244)
at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (core.js:1141)
at resolveToken (core.js:1300)
at tryResolveToken (core.js:1244)
at StaticInjector.push../node_modules/@angular/core/fesm5/core.js.StaticInjector.get (core.js:1141)
at resolveNgModuleDep (core.js:8369)
at NgModuleRef_.push../node_modules/@angular/core/fesm5/core.js.NgModuleRef_.get (core.js:9057)
at resolveDep (core.js:9422)
at resolvePromise (zone.js:814)
at resolvePromise (zone.js:771)
at zone.js:873
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:421)
at Object.onInvokeTask (core.js:3811)
at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:420)
at Zone.push../node_modules/zone.js/dist/zone.js.Zone.runTask (zone.js:188)
at drainMicroTaskQueue (zone.js:595)
at ZoneTask.push../node_modules/zone.js/dist/zone.js.ZoneTask.invokeTask [as invoke] (zone.js:500)
at invokeTask (zone.js:1540)
答案 0 :(得分:6)
更新:因此,对于我的问题,我能够使用此Bug问题[https://github.com/angular/material2/issues/8419]中的提供程序来解决。我在app.module提供商列表中添加了以下两行:
{ provide: MatDialogRef, useValue: {} },
{ provide: MAT_DIALOG_DATA, useValue: [] },
该错误涉及测试问题,但对我来说,我有一个MatDialog在工作,但另一个会抛出错误。
希望这会有所帮助,阿迪姆
答案 1 :(得分:0)
在您的MATERIAL.MODULE.TS中
import {MatDialogRef} from '@angular/material';
@NgModule({
providers: [MatDialogRef]
})
答案 2 :(得分:0)
您遇到了这个问题,因为您在HTML布局上添加了对对话框的引用。请删除该引用,并确保使用该引用在模块的entryComponents属性上添加对话框。参见角度material docs here。您的模块声明应如下所示。
@NgModule({
imports: [
// ...
MatDialogModule
],
declarations: [
AppComponent,
ExampleDialogComponent
],
entryComponents: [
ExampleDialogComponent // THE MAGIC HAPPENDS HERE
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule {}
答案 3 :(得分:0)
是的,您必须在@NgModule中输入entryComponents,如下所示
entryComponents: [DialogComponent, GetDialogContent],