0
我目前得到了與(僅適用)的路由器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位置,但現在,我只是試圖弄到路由器。
我不理解導航應該如何工作?
對於路徑爲''''且沒有子節點的路徑使用'pathMatch:'full'' –
您似乎沒有正確調用'navigate'方法:'this.router.navigate(['/']); ',而不是'this.router.navigate ['/'];' –
@VohidjonKarimjonov對不起,這個錯誤是在我寫了一堆測試來弄清楚發生了什麼的時候出現的。我原來的代碼肯定是作爲一個函數,而不是數組。 – RhoVisions