路由器导航似乎并没有被改变成分

问题描述:

我目前得到了与(仅适用)的路由器2条路线:路由器导航似乎并没有被改变成分

{ path: ':org', component: OrgComponent, resolve: [ OrgResolver ] } 
{ path: '', component: NotFoundComponent }, 

解析器是非常直截了当:

constructor(private router: Router, private orgService: OrgService) { } 

resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Org> { 
    return this.orgService.getOrgData(route.params['org']).map(function (org) { 
     if (org === null) { 
      this.router.navigate['/']; 
      return null; 
     } else { 
      return org; 
     } 
    }); 
} 

如果我直接去/,我打了NotFoundComponent。如果我转到像/invalid这样的OrgService返回为空的路由(因此无效),该应用确实路由到/,但组件保持不变。而且因为有在路径中没有:org,API调用失败(我检查,以确保您在某种字符串传递),以及与此错误的应用程序崩溃:

ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'navigate' of undefined 

我可以修复崩溃的部分,但我期望的是,如果你去了一个无效的位置,我想把你转到其他地方。从长远来看,这将是一个404位置,但现在,我只是试图弄到路由器。

我不理解导航应该如何工作?

+0

对于路径为''''且没有子节点的路径使用'pathMatch:'full'' –

+0

您似乎没有正确调用'navigate'方法:'this.router.navigate(['/']); ',而不是'this.router.navigate ['/'];' –

+0

@VohidjonKarimjonov对不起,这个错误是在我写了一堆测试来弄清楚发生了什么的时候出现的。我原来的代码肯定是作为一个函数,而不是数组。 – RhoVisions

一位同事指出,我在.map中使用标准函数,而不是箭头函数。正因为如此。 this.router.navigate是失败的部分,而不是组件的实际加载。

更改

return this.orgService.getOrgData(route.params['org']).map(function (org) { 

return this.orgService.getOrgData(route.params['org']).map((org) => { 

解决的问题。