2017-08-28 8 views
0

私はかなりの検索をして、問題を解決した回答が見つかりませんでした。だから私はこの質問を投稿しています。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サービスには、booleanを返すだけの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をオンにしてイベントを追跡してみてください。 {route: '**'、コンポーネント:PageNotFoundComponent} ]、{enableTracing:true})、{Router: ' – Josf

答えて

0

感謝を。私は私の質問に答えました。

私が説明したように、私は詳細ページにルーティングしている間、ほとんどリゾルバを持っていません。これらのリゾルバの1つに要素を取得するロジックがあります。

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

https://stackoverflow.com/a/42346203/5162622 - ここで述べたように何の値がないように、)(最初は、エラー通知を送信しています。だから私はtake(1)に置き換えて、すべてがよさそうだ。

私がコメントで述べたように、ルーティング中にイベントトラッキングを行う方法を知っておいた方がよいでしょう。それが私がこれを追跡する方法です。

関連する問題