当前位置:  开发笔记 > 前端 > 正文

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

如何解决《如何在Angular2中以编程方式启用路由跟踪?》经验,为你挑选了1个好方法。

我知道我可以在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属性以打开和关闭它.

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



1> LeOn - Han L..:

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

let routes = [{path: ..., component : ...}, ...];
RouterModule.forRoot(routes, {
                       enableTracing: /localhost/.test(document.location.host)
                     });

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有