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) 替换了它,一切看起来都不错。

正如我在上面的评论中提到的,知道如何在路由时进行事件跟踪是很好的。这就是我如何追踪到它的。