Angular2:用于调试的更好/更深的区域堆栈

Angular2:用于调试的更好/更深的区域堆栈,angular,stack,trace,zone,Angular,Stack,Trace,Zone,Angular2中有没有办法为异步代码获得更好的调用堆栈?我一直认为跟踪setTimeout()的执行上下文、发出的事件、承诺等是Zone的优势之一 我构建了一个plunker示例,其中显示了一个常见的场景,这使得无法跟踪错误 我有以下示例场景: @Component({ selector: 'my-component', template: ` <div> <button (click)="doSmth()">Cause an async e

Angular2中有没有办法为异步代码获得更好的调用堆栈?我一直认为跟踪setTimeout()的执行上下文、发出的事件、承诺等是Zone的优势之一

我构建了一个plunker示例,其中显示了一个常见的场景,这使得无法跟踪错误

我有以下示例场景:

@Component({
  selector: 'my-component',
  template: `
    <div>
      <button (click)="doSmth()">Cause an async error!</button>
    </div>
  `
})
export class MyComponent {
  @Output() error = new EventEmitter<any>(true);

  public doSmth(): void {
    this.error.emit('Oh snap!');
  }
}

@Component({
  selector: 'my-app',
  template: `
    <div>
      <my-component (error)="handleError($event)"></my-component>
    </div>
  `,
})
export class App {
  private error = "";

  public handleError(reason: any): void {
    Promise.reject(reason)
  }
}

@NgModule({
  imports: [ BrowserModule ],
  declarations: [ App, MyComponent ],
  bootstrap: [ App ]
})
export class AppModule {}
这将使我没有机会在更复杂的应用程序中跟踪实际的错误触发器来源

我还嵌入了“长堆栈跟踪区域”脚本,它根本没有效果

问题是: 我必须做什么才能获得更好的区域堆栈跟踪?还是有可能

提前感谢。

解决方案是使用“Chrome DevTools”在异常情况下中断订单

为此,在Chrome开发工具中,您应该:

  • 使用以仅打断您感兴趣的代码

  • 同时,Chrome和Firefox开发工具具有完整的区域堆栈支持,这只是一个梦想。(很抱歉回答晚了)
    Error: Oh Snap!
    at resolvePromise (zone.js:538)
    at Function.ZoneAwarePromise.reject (zone.js:594)
    at App.handleError (app.ts:34)
    at DebugAppView._View_App0._handle_error_3_0 (App.ngfactory.js:82) //not my file
    at eval (core.umd.js:12718)
    at eval (core.umd.js:9180)
    at ZoneDelegate.invokeTask (zone.js:356)
    at Object.onInvokeTask (core.umd.js:9236)
    at ZoneDelegate.invokeTask (zone.js:355)
    at Zone.runTask (zone.js:256)