StaticInjectorError (AppModule) [MatDialogTitle -> MatDialogRef] - PullRequest
0 голосов
/ 19 октября 2018

Я знаком с этой ошибкой, но я начал видеть ее только после обновления до Angular Material 6.4.7.

Все мои модули ссылаются на мой собственный MaterialModule, который экспортирует MatDialogModule.У меня нет никаких настроек провайдера для MatDialogRef - нет необходимости раньше.

А как обстоят дела с [MatDialogTitle -> MatDialogRef]?Что это значит?

В сборках dev и prod все работает нормально.Я не могу понять, что вызывает это.

Есть ли способ отследить это обратно к чему-то ??

Спасибо

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 ]

0 голосов
/ 05 августа 2019

Да, вы должны написать в entryComponents в своем @NgModule, как показано ниже

entryComponents: [DialogComponent, GetDialogContent],
0 голосов
/ 17 января 2019

в вашем MATERIAL.MODULE.TS

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

@NgModule({
providers: [MatDialogRef]
})
0 голосов
/ 05 августа 2019

У вас возникла эта проблема, потому что вы добавили ссылку на свой диалог в свой HTML-макет.Удалите эту ссылку и убедитесь, что вы добавили свой диалог в свойстве entryComponents в модуле, используя его.См. Угловые документы по материалам здесь .Объявление вашего модуля должно выглядеть следующим образом.

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

  declarations: [
    AppComponent,
    ExampleDialogComponent
  ],

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

  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule {}
0 голосов
/ 24 октября 2018

Обновление: поэтому для моей проблемы я смог решить ее с помощью провайдеров из этой ошибки [https://github.com/angular/material2/issues/8419].. Я добавил следующие 2 строки в свой список провайдеров app.module:

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

Ошибка относится к проблемам с тестированием, но для меня у меня работал один MatDialog, но другой выдает ошибку.

Надеюсь, это поможет, adym

...