我搜索了很多,找不到任何解决我问题的答案。所以我发布这个问题。
我的问题与这个问题非常相似。 Angular 2.0.1 Router EmptyError: no elements in sequence
但是我甚至无法通过添加pathMatch来解决它:'full',。
尝试从列表表导航(导航到详细视图)时出现间歇性的zonewaware错误 下面是我的模块。
@NgModule({
imports: [
CommonModule,
RouterModule.forChild([
{
path: 'teams',
component: TeamsListComponent,
pathMatch: 'full',
resolve: {
TeamTemplate: TeamListTemplatesResolver
},
canActivate: [AuthenticatedGuard]
}, {
path: 'teams/:id',
component: TeamFormComponent,
pathMatch: 'full',
resolve: {
team: TeamFormTeamResolver,
resources: TeamFormResourcesResolver
},
canActivate: [AuthenticatedGuard]
}
]),
我的authGuard服务有一个canActivate方法,只返回一个布尔值。
public canActivate(): boolean {
if (this.authService.isLoggedIn()) {
return true;
}
this.router.navigate(['/logout', { redirect: location.pathname }]);
return false;
}
这是错误: Zone aware error
我可以使用{enableTracing:true}获取路由器事件日志:
Router Event: NavigationStart
Router Event: RoutesRecognized
Router Event: GuardsCheckStart
Router Event: GuardsCheckEnd
Router Event: ResolveStart
Router Event: NavigationError
答案 0 :(得分:0)
感谢所有关注此问题的人。我得到了我的问题的答案。
正如我所描述的,当我路由到详细信息页面时,我只有很少的解析器。在其中一个解析器上,有一个获取元素的逻辑。
public resolve(_route: ActivatedRouteSnapshot, _state: RouterStateSnapshot): Observable<T[]> {
return this.service.browse({}).first();
}
https://stackoverflow.com/a/42346203/5162622 - 如前所述,第一个()发送错误通知,因为没有值。所以我用take(1)替换它,一切看起来都不错。
正如我在评论中提到的那样,知道如何在路由时进行事件跟踪是很好的。这就是我如何追踪它。