Angular “角度材质”对话框未正确显示数据
在我的应用程序中,我全局处理错误,如果我遇到任何错误,我只是打开 mat对话框以显示错误描述和代码 问题是当对话框打开时,几秒钟后数据显示为空, 我通过调试测试数据是否正确发送,但显示错误描述和错误代码需要时间 这是全球处理错误的正确方法吗Angular “角度材质”对话框未正确显示数据,angular,Angular,在我的应用程序中,我全局处理错误,如果我遇到任何错误,我只是打开 mat对话框以显示错误描述和代码 问题是当对话框打开时,几秒钟后数据显示为空, 我通过调试测试数据是否正确发送,但显示错误描述和错误代码需要时间 这是全球处理错误的正确方法吗 import {ErrorHandler,Injectable} from '@angular/core' import { HttpErrorResponse } from '@angular/common/http'; import { errorDia
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
方法加载am设置isLoad
标志为true之后
在HTML中使用ngIf
指令,ifisLoad
true显示对话框内容。这是预期的工作,但当组件加载小空对话框显示
如何在ContentInit之后加载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>
从'@angular/core'导入{Component,Inject,AfterContentInit};
从“@angular/material”导入{MAT_DIALOG_DATA,MatDialogRef};
@组成部分({
选择器:“错误对话框”,
templateUrl:“./error dialog.component.html”,
样式URL:['./错误对话框.component.scss']
})
导出类ErrorDialogComponent实现AfterContentInit
{
错误代码:字符串;
isLoaded:boolean=false;
建造师(
公共dialogRef:MatDialogRef,
@注入(MAT_对话框_数据)数据
{
this.errorCode=data.errorCode;
this.errorDescription=data.errorDescription;
}
ngAfterContentInit(){
this.isLoaded=true;
}
}
{{errorDescription}}
请发布错误对话框组件的完整代码。@earthw0rmjim已更新请发布错误对话框组件的完整代码。@earthw0rmjim已更新