Как закрыть все модальные диалоги, открытые с помощью angular-material сразу

Я использую угловой материал dialogcomponent в своем приложении angular, чтобы открывать диалоговое окно всякий раз, когда ошибка исходит от сервера.

Если одновременно возникает несколько ошибок, открывается несколько диалоговых окон, что мне подходит. Я хочу закрыть все диалоговые окна одновременно, используя метод closeAll.

При попытке использовать метод closeAll возникает эта ошибка:

error TS2339: Property 'closeAll' does not exist on type 'MatDialogRef<DialogComponent, any>'.

Как я открываю диалоговое окно:

 constructor(private dialog: MatDialog) {}
const dialogRef = this.dialog.open(DialogComponent, {
          width: "500px",
          height: "500px",
          disableClose: true,
          hasBackdrop: true,
          data: { name: this.name, animal: this.animal }
        });

DialogComponent.ts

onClose(): void {
    this.dialogRef.closeAll();
  }
app.module.ts

@NgModule({
  declarations: [
    DialogComponent,
    ...
  ],
  imports: [
    MatDialogModule,
    BrowserAnimationsModule,
    ...
  ],
  providers: [
      ...
  ],
  entryComponents: [ DialogComponent],
  bootstrap: [AppComponent]
})
export class AppModule {}

Кто-нибудь может мне помочь, пожалуйста!


person Krishna    schedule 13.04.2018    source источник


Ответы (2)


Добавить MatDialog в DialogComponent.ts

import { MAT_DIALOG_DATA, MatDialogRef, MatDialog } from '@angular/material';

export class DialogComponent  {
  constructor(private _dialog: MatDialog) { }

  public onClose(): void {
    this._dialog.closeAll();
  }
}
person mQuiroz    schedule 08.08.2019

Введите MatDialog в DialogComponent.ts

  constructor(private dialog: MatDialog) { }

 onClose(): void {
    this.dialog.closeAll();
  }

person Krishna    schedule 13.04.2018