Angular2路由问题 - 区域感知错误序列中没有元素

问题描述:

我已经搜索了很多,找不到任何解决我的问题的答案。所以我发布这个问题。Angular2路由问题 - 区域感知错误序列中没有元素

我的问题与此问题非常相似。 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:真正}:

Router Event: NavigationStart 
Router Event: RoutesRecognized 
Router Event: GuardsCheckStart 
Router Event: GuardsCheckEnd 
Router Event: ResolveStart 
Router Event: NavigationError 
+0

我学到的是事件追踪。现在我意识到这与我的一个解决方案有关。如果您遇到路由器问题,请尝试通过启用enableTracing来跟踪事件。 'RouterModule.forRoot([{ 路径: '',redirectTo: '/仪表盘',pathMatch: '满'},{ 路径: '**',组分:PageNotFoundComponent} ],{enableTracing:真}), ' – Josf

感谢的人谁看这个问题。我得到了我的问题的答案。

正如我所描述的,当我转到详细信息页面时,我有几个解析器。在其中一个解析器上有一个获取元素的逻辑。

public resolve(_route: ActivatedRouteSnapshot, _state: RouterStateSnapshot): Observable<T[]> { 
    return this.service.browse({}).first(); 
} 

https://*.com/a/42346203/5162622 - 如这里所提到的,第一个()在发送错误通知,因为没有价值。所以我用take(1)取代了它,并且都很好看。

正如我在评论中提到的那样,在路由时知道如何做事件跟踪是很好的。这就是我可以如何追踪这一点。