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
答
感谢的人谁看这个问题。我得到了我的问题的答案。
正如我所描述的,当我转到详细信息页面时,我有几个解析器。在其中一个解析器上有一个获取元素的逻辑。
public resolve(_route: ActivatedRouteSnapshot, _state: RouterStateSnapshot): Observable<T[]> {
return this.service.browse({}).first();
}
https://stackoverflow.com/a/42346203/5162622 - 如这里所提到的,第一个()在发送错误通知,因为没有价值。所以我用take(1)取代了它,并且都很好看。
正如我在评论中提到的那样,在路由时知道如何做事件跟踪是很好的。这就是我可以如何追踪这一点。
我学到的是事件追踪。现在我意识到这与我的一个解决方案有关。如果您遇到路由器问题,请尝试通过启用enableTracing来跟踪事件。 'RouterModule.forRoot([{ 路径: '',redirectTo: '/仪表盘',pathMatch: '满'},{ 路径: '**',组分:PageNotFoundComponent} ],{enableTracing:真}), ' – Josf