Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debugging 如何在Angular 2中以编程方式启用路由跟踪?_Debugging_Angular_Routing - Fatal编程技术网

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

Debugging 如何在Angular 2中以编程方式启用路由跟踪?,debugging,angular,routing,Debugging,Angular,Routing,我知道我可以在Angular 2路由器上启用跟踪: export const routing: ModuleWithProviders = RouterModule.forRoot(routes, { enableTracing: true }); 有没有办法通过编程设置该值 我有一个config.json文件,其中包含许多应用程序设置。我想包括一个布尔属性,可以用来控制跟踪是否打开。我不希望客户能够修改包含我的路由的文件,但仍然能够启用跟踪以帮助调试未被测试捕获的边缘情况 我可以重

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

export const routing: ModuleWithProviders = 
    RouterModule.forRoot(routes, { enableTracing: true });
有没有办法通过编程设置该值

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

我可以重新启动应用程序,但不可以重建

[更新] 在查看路由器源代码后,如果没有pull请求,它看起来是不可行的。对变更内容的简单解释如下:

  • 在router.ts中,添加一个名为tracing:boolean的公共属性
  • 在router_module.ts::setupRouter中: 改变

    if (opts.enableTracing) {
    

    router.events
    .filter(e=>router.tracing)
    .订阅(e=>{
  • 3.可能需要在跟踪属性上添加一些验证

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


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

    目前没有明确的编程方法。我们的解决方法是仅在
    本地开发
    时启用它,以便我们可以获得所有详细信息/异常-stacktrace等类似于:

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

    我发现这个问题没有得到回答。你有没有做到这一点?这似乎仍然是一个问题。2017年,GitHub上提出了一个问题,但很快就解决了。
    router.events.subscribe(e => { ...
    
    router.events
       .filter(e => router.tracing)
       .subscribe(e => { ...</li>
    
    let routes = [{path: ..., component : ...}, ...];
    RouterModule.forRoot(routes, {
                           enableTracing: /localhost/.test(document.location.host)
                         });