我知道我可以在Angular 2路由器上启用跟踪:
export const routing: ModuleWithProviders =
RouterModule.forRoot(routes, { enableTracing: true });
有没有办法以编程的方式设置该值?我有一个 config.json 文件,其中包含许多应用程序设置。我想包含一个布尔属性,可用于控制是否打开跟踪功能。我不想让客户修改包含我的路由的文件,但仍希望能够打开跟踪以帮助调试未被测试捕获的边缘情况。
我可以接受必须重新启动应用程序,但不能接受必须重新构建。
[更新] 查看路由器源代码后,发现无法在没有拉取请求的情况下实现。更改所需的简单解释:
1. 在 router.ts 中添加一个名为 tracing 的公共属性。 2. 在 router_module.ts::setupRouter 中:
if (opts.enableTracing) {
torouter.tracing = opts.enableTracing</pre>
router.events.subscribe(e => { ...
"to"router.events
.filter(e => router.tracing)
.subscribe(e => { ...</li>
3. 可能需要在跟踪属性上添加一些验证。
通过这些更改,可以导入 Router,然后设置 router.tracing 属性以启用或禁用它。
我不知道在没有订阅者的情况下发出所有事件和使用过滤订阅发出所有事件之间的性能差异。