2

我熟悉这个错误,但我只是在更新到 Angular Material 6.4.7 后才开始看到这个。

我所有的模块都引用了我自己的导出 MatDialogModule 的 MaterialModule。我没有任何 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)
4

4 回答 4

22

更新:所以对于我的问题,我能够使用来自这个 Bug 问题 [ https://github.com/angular/material2/issues/8419]的提供者来解决它。我将以下 2 行添加到我的 app.module 提供程序列表中:

{ provide: MatDialogRef, useValue: {} },
{ provide: MAT_DIALOG_DATA, useValue: [] },

该错误是指测试问题,但对我来说,我有一个 MatDialog 工作,但另一个会抛出错误。

希望这会有所帮助,阿迪姆

于 2018-10-24T18:00:05.310 回答
0

您遇到此问题是因为您在 html 布局中添加了对对话框的引用。请删除该引用并确保在使用它的模块的 entryComponents 属性上添加对话框。请参阅此处的角度材料文档。您的模块声明应如下所示。

@NgModule({
  imports: [
    // ...
    MatDialogModule
  ],

  declarations: [
    AppComponent,
    ExampleDialogComponent
  ],

  entryComponents: [
    ExampleDialogComponent // THE MAGIC HAPPENDS HERE
  ],

  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule {}
于 2019-08-05T07:20:57.273 回答
0

是的,您必须在@NgModule 中写入entryComponents,如下所示

entryComponents: [DialogComponent, GetDialogContent],
于 2019-08-05T09:04:30.650 回答
-1

在你的 MATERIAL.MODULE.TS

    import {MatDialogRef} from '@angular/material';

@NgModule({
providers: [MatDialogRef]
})
于 2019-01-17T02:43:59.337 回答