Angular2 路由问题 - 区域感知错误序列中没有元素
Angular2 routing issues - Zone aware error No elements in sequence
我搜索了很多,但找不到任何解决我问题的答案。所以我发布了这个问题。
我的问题和这个问题很相似。
但是即使添加pathMatch我也无法解决它:'full',.
我尝试从列表导航时出现间歇性区域软件错误 table(导航到详细视图)
下面是我的模块。
@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 方法,它只是 returns 一个布尔值。
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
感谢所有关注此问题的人。我得到了问题的答案。
正如我所描述的,我在路由到详细信息页面时几乎没有解析器。在其中一个解析器上,有一个获取元素的逻辑。
public resolve(_route: ActivatedRouteSnapshot, _state: RouterStateSnapshot): Observable<T[]> {
return this.service.browse({}).first();
}
- 如此处所述,first() 正在发送错误通知,因为没有值。所以我用 take(1) 替换了它,一切看起来都不错。
正如我在上面的评论中提到的,知道如何在路由时进行事件跟踪是很好的。这就是我如何追踪到它的。
我搜索了很多,但找不到任何解决我问题的答案。所以我发布了这个问题。
我的问题和这个问题很相似。
但是即使添加pathMatch我也无法解决它:'full',.
我尝试从列表导航时出现间歇性区域软件错误 table(导航到详细视图) 下面是我的模块。
@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 方法,它只是 returns 一个布尔值。
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
感谢所有关注此问题的人。我得到了问题的答案。
正如我所描述的,我在路由到详细信息页面时几乎没有解析器。在其中一个解析器上,有一个获取元素的逻辑。
public resolve(_route: ActivatedRouteSnapshot, _state: RouterStateSnapshot): Observable<T[]> {
return this.service.browse({}).first();
}
正如我在上面的评论中提到的,知道如何在路由时进行事件跟踪是很好的。这就是我如何追踪到它的。