角材料对话框无法正确显示数据

时间:2019-04-26 07:22:02

标签: angular

在我的应用程序中,我正在全局处理错误,如果我遇到任何错误,请打开 mat对话框以显示错误描述和代码。

问题是在打开对话框后几秒钟显示数据后显示为空, 我通过调试测试的数据可以正确发送,但是花时间显示错误描述和错误代码 这是正确处理全局错误的正确方法吗?

import {ErrorHandler,Injectable} from '@angular/core'
import { HttpErrorResponse } from '@angular/common/http';
import { errorDialog }  from '..error-dialog/error-dialog.component';
import { MatDialogConfig, MatDialog } from '@angular/material';

@Injectable()
export class GlobalErrorHandler extends ErrorHandler{
  constructor(private _dialog: MatDialog) {
    super();
  }
  handleError(error: any) {
    this.logError(error);
  }
  logError(error: any) {
    if (error instanceof HttpErrorResponse) {
        this.openGenericErrorDialog("BackEndErrorMessage",error.status);
    }
    else{
      throw error;
    }
  }

  openErrDialog(errMsg?: string,errCode?:number): void {
    const dialogData = new MatDialogConfig();
    dialogData.autoFocus = false;
    dialogData.data = {
      errorDescription: errMsg,
      errorCode:errCode
    };
    if(dialogData.data){
            this._dialog.open(errorDialog , dialogData);
    }


  }
}

我在errorDialog组件中添加了afterContentInit生命周期挂钩,在afterContentInit方法加载之后,将isLoad标志设置为true 在使用ngIf指令的html中,如果isLoad true则显示对话框内容。这按预期工作,但是当组件加载时显示一个小的空白对话框 如何在afterContentInit之后加载html内容?负载前如何限制

ErrorDialogComponent

 import { Component, Inject,AfterContentInit } from '@angular/core';
import { MAT_DIALOG_DATA, MatDialogRef } from '@angular/material';

@Component({
    selector   : 'error-dialog',
    templateUrl: './error-dialog.component.html',
    styleUrls  : ['./error-dialog.component.scss']
})
export class ErrorDialogComponent implements AfterContentInit
{
    errorCode:string;
    isLoaded:boolean=false;
    constructor(
        public dialogRef: MatDialogRef<ErrorDialogComponent>,
        @Inject(MAT_DIALOG_DATA) data)
    {
        this.errorCode=data.errorCode;
        this.errorDescription=data.errorDescription;
    }

    ngAfterContentInit(){
        this.isLoaded=true; 
    }
}


<div  *ngIf="isLoaded" >
    {{errorDescription}}
</div>

0 个答案:

没有答案