我知道我可以在Angular 2路由器上启用Trace:
export const routing: ModuleWithProviders = RouterModule.forRoot(routes, { enableTracing: true });
有没有办法以编程方式设置该值?
我有一个config.json文件,其中包含许多应用程序设置.我想包含一个布尔属性,可用于控制是否启用跟踪.我宁愿没有客户能够修改包含我的路由的文件,但仍然能够打开跟踪来帮助调试未被测试捕获的边缘情况.
我不得不重新启动应用程序,但不能重建.
[更新]查看路由器源后,如果没有拉取请求,它看起来不可行.简单解释需要改变的内容:
在router.ts中,添加一个名为tracing:boolean的公共属性
在router_module.ts :: setupRouter中:
更改
if (opts.enableTracing) {
至
router.tracing = opts.enableTracing
更改可观察量:
router.events.subscribe(e => { ...
至
router.events .filter(e => router.tracing) .subscribe(e => { ...
3.可能需要在跟踪属性上添加一些验证.
通过这些更改,可以导入路由器,然后设置router.tracing属性以打开和关闭它.
我不知道在没有订阅者的情况下发出所有事件与使用过滤订阅发出所有事件之间的性能差异是什么.
目前没有明确的方法以编程方式执行此操作.我们的解决方法是只启用它,local development
以便我们可以获取所有详细信息/ exception-stacktrace等.例如:
let routes = [{path: ..., component : ...}, ...]; RouterModule.forRoot(routes, { enableTracing: /localhost/.test(document.location.host) });