Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用自定义errorhandler捕获Javascript错误后,Angular2/Angular2数据绑定不起作用_Angular_Typescript_Data Binding_Error Handling - Fatal编程技术网

使用自定义errorhandler捕获Javascript错误后,Angular2/Angular2数据绑定不起作用

使用自定义errorhandler捕获Javascript错误后,Angular2/Angular2数据绑定不起作用,angular,typescript,data-binding,error-handling,Angular,Typescript,Data Binding,Error Handling,我使用Angular 2.4.9并实现了一个自定义错误处理程序,它只捕获所有错误并导航到错误路径以显示消息 我有一个切换按钮来显示/隐藏绑定到布尔值的详细消息(也尝试了对象中的布尔值,即object.batherror),如果我捕获Http错误并自己抛出错误,所有这些都可以正常工作。但是,如果遇到角度错误,例如ViewWrappedError,则数据绑定将拒绝工作。(单击)evets仍然起作用,布尔值从true切换为false,只是更改不会反映在页面上 我是不是错过了什么东西让它发挥作用 imp

我使用Angular 2.4.9并实现了一个自定义错误处理程序,它只捕获所有错误并导航到错误路径以显示消息

我有一个切换按钮来显示/隐藏绑定到布尔值的详细消息(也尝试了对象中的布尔值,即object.batherror),如果我捕获Http错误并自己抛出错误,所有这些都可以正常工作。但是,如果遇到角度错误,例如ViewWrappedError,则数据绑定将拒绝工作。(单击)evets仍然起作用,布尔值从true切换为false,只是更改不会反映在页面上

我是不是错过了什么东西让它发挥作用

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();
  }
}
HTML模板

<div class="error-container">
  <h1>Sorry, something went wrong.</h1>
  <p class="error-message">An error occurred while processing your request.  Details on this error can be found below.</p>
</div>
  <p *ngIf="!showDetailedError" (click)="showDetailedError = !showDetailedError" class="info-icon">Click for detailed description</p>
</div>

对不起,出了点问题。

处理您的请求时出错。下面可以找到有关此错误的详细信息

单击以获取详细说明


没有任何代码就很难找出问题所在,但我认为
object.showError
很可能是您的问题


角度变化检测了解组件属性,但不了解复杂对象的内部,尤其是当它位于阵列对象内部时。尝试将该标志移出或使用getter函数将其绑定。

如果没有任何代码,很难找出问题所在,但我认为
对象。淋浴ROR
很可能是您的问题


角度变化检测了解组件属性,但不了解复杂对象的内部,尤其是当它位于阵列对象内部时。尝试将该标志移出或使用getter函数将其绑定。

您可以尝试调用更改检测:

@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处理后不会继续变更检测。 显式调用它可能会有所帮助。不过我还没试过。
我认为在出现异常后继续使用应用程序是不安全的。自定义错误处理程序主要是一种报告异常的方法(例如在服务器日志中),以便您可以在源代码中修复原因


另请参见

您可以尝试调用更改检测:

@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处理后不会继续变更检测。 显式调用它可能会有所帮助。不过我还没试过。
我认为在出现异常后继续使用应用程序是不安全的。自定义错误处理程序主要是一种报告异常的方法(例如在服务器日志中),以便您可以在源代码中修复原因


另请参见

当前我的布尔值不在对象内。我添加了一些代码来阐明当前布尔值不在对象中。我添加了一些代码来为我提供一些帮助。将ApplicationRef添加到我的组件中,并在切换我的详细错误时手动触发更改检测。将ApplicationRef添加到我的组件中,并在切换我的详细错误时手动触发更改检测