我正在使用Angular 2.4.9并且已经实现了一个自定义错误处理程序,它只捕获所有错误并导航到错误路由以显示消息。
我有一个切换按钮来显示/隐藏绑定到布尔值的详细消息(也尝试了一个对象中的布尔值,即object.showError)如果我正在捕捉Http错误并自己抛出错误,那么一切正常。但是,如果我遇到像ViewWrappedError这样的Angular错误,数据绑定就会拒绝工作。 (点击)evets仍然是函数,布尔值从true切换到false,只是更改没有反映在页面上。
我错过了一些让这个工作的东西吗?
Connection:Keep-Alive
Content-Type:application/xml
Date:Wed, 15 Mar 2017 15:12:45 GMT
Server:nginx/1.11.4
Transfer-Encoding:chunked
X-Powered-By:PHP/7.1.1
HTML模板
import { Component } from '@angular/core';
import { ErrorService } from './error.service';
import { Error } from './index';
@Component({
moduleId: module.id,
selector: 'error',
templateUrl: 'error.component.html',
styleUrls: ['error.component.css']
})
export class ErrorComponent {
public error: Error;
public showDetailedError: boolean;
constructor(private errorService: ErrorService) {
this.showDetailedError = false;
this.error = this.errorService.getError();
}
}
答案 0 :(得分:0)
很难在没有任何代码的情况下查明问题,但我认为object.showError
很可能是你的问题。
角度变化检测了解组件属性,但不知道复杂对象内部,尤其是当它存在于数组对象中时。尝试移动该标记或使用getter函数绑定它。
答案 1 :(得分:0)
您可以尝试调用更改检测:
@Injectable()
class MyExceptionHandler implements ExceptionHandler {
constructor(private appRef:ApplicationRef) {}
call(error, stackTrace = null, reason = null) {
// do something with the exception
this.appRef.tick();
}
}
在更改检测期间发生异常时,Angular在ErrorHandler处理后不会继续更改检测。 明确地调用它可能会有所帮助。我虽然没有尝试过自己 我不认为在异常后继续使用该应用程序是安全的。自定义错误处理程序主要是一种报告异常的方法(例如在服务器日志中),以便您可以在源中修复原因。