如何在Angular 2中以编程方式启用路由跟踪?

时间:2017-01-14 00:19:48

标签: debugging angular routing

我知道我可以在Angular 2路由器上启用跟踪:

export const routing: ModuleWithProviders = 
    RouterModule.forRoot(routes, { enableTracing: true });

有没有办法以编程方式设置该值?

我有一个config.json文件,它有许多应用程序设置。我想包含一个布尔属性,可用于控制是否启用跟踪。我宁愿没有客户能够修改包含我的路由的文件,但仍然能够启用跟踪来帮助调试未被测试捕获的边缘情况。

我必须重新启动应用程序,但不能重建。

  

[更新]   查看路由器源后,如果没有拉取请求,它看起来不可行。简单解释需要做出哪些改变:

  1. 在router.ts中,添加一个名为tracing:boolean
  2. 的公共属性
  3. 在router_module.ts :: setupRouter中:

    • 更改

      if (opts.enableTracing) {
      

      router.tracing = opts.enableTracing</pre>
      

    • 更改observable:

      router.events.subscribe(e => { ...
      

      router.events
         .filter(e => router.tracing)
         .subscribe(e => { ...</li>
      

3.可能需要在跟踪属性上添加一些验证。

通过这些更改,可以导入路由器,然后设置router.tracing属性以打开和关闭它。

我不知道在没有订阅者的情况下发布所有事件与使用过滤订阅发出所有事件之间的性能差异是什么。

1 个答案:

答案 0 :(得分:7)

目前还没有明确的方法以编程方式执行此操作。我们的解决方法是仅为step启用它,以便我们可以获取所有详细信息/ exception-stacktrace等。例如:

local development