2017-05-19 81 views
1

我有以下的用戶模板文件,其中包含標籤控件路線params爲空

<nav md-tab-nav-bar>    
      <a class="tab-label" md-tab-link [routerLink]="'following'" routerLinkActive #following="routerLinkActive" [active]="following.isActive"> 
      Following 
      </a> 

及以下app.route配置

export const ROUTES: Routes = [ 
{ 
    path: 'user/:id', loadChildren: './user/user.module#UserModule' 
}, 

及以下user.route config

const ROUTES: Routes = [ 
{ 
    path: '', component: UserComponent, 
    children: [ 

     { path: 'following', loadChildren: './following/following.module#FollowingModule' }    
    ] 
} 

];

的問題是,我想要得到的ID在這樣的「下面的」組件:

this.route.params.subscribe(params => { 
      console.error(params); 
     }); 

但params爲總是空的。

我是否需要以某種方式指定user.route中的id參數?

我也打過電話這樣的父母,但params爲仍然empy ...

this.subRoute = this.route.parent.params.subscribe(params => { 

      console.log(params); 
}); 
+0

你能過去在這裏,你試圖URL的例子嗎? – developer033

+1

嗨@ developer033這裏是一個例子http:// localhost:3000/user/5836aadf7911f7725ce3cd2b /關注 – doorman

+0

嗨,我的解決方案正在工作。請在這裏添加你的plunker網址。 – Houtan

回答

0

使用該路由:

this.router.navigate(['/productlist'], { queryParams: { filter: JSON.stringify(this.product) } }); 

和另一個組件:

import { Component, OnInit } from '@angular/core'; 
import { Router, ActivatedRoute, Params } from '@angular/router'; 
. 
. 
. 
export class ProductListComponent implements OnInit { 

    constructor(private route: ActivatedRoute, private router: Router) { 
    } 

    public ngOnInit() { 
     this.route 
      .queryParams 
      .subscribe(params => { 
       let filterParam = JSON.parse(params['filter']); 
       console.log(filterParam); 
      }); 
    } 
} 
+1

反對票的原因是什麼? – ceebreenk

+0

也許他需要SO –

2

我是否需要以某種方式指定user.route中的id參數?

是的,你需要在路徑指定參數:

const routes: Routes = [ 
{ 
    path: '', component: UserComponent, 
    children: [  
    { 
     loadChildren: './following/following.module#FollowingModule', 
     path: ':parent_id/following' // <- Here 
    } 
    ] 
} 

所以,某處「下面的」 組件

const parentId = this.activatedRoute.snapshot.paramMap.get('parent_id'); 

PS :我是假設你有一個這樣的配置路徑(在「下面的」組件):

const routes: Routes = [ 
    { 
    component: FollowingComponent, path: '' 
    ... 
    } 
] 
+0

Hi @ developer033謝謝你的建議。但是,如果我添加parent_id,我路由到根可能是因爲app.routes已經定義:父參數所需的id參數。 – doorman

+0

嘿,我不明白你在說什麼..你測試了我的解決方案嗎? – developer033

+0

是的,所以我有一切設置像你的建議。另外,我在app.routes中有'user /:id'路徑。現在如果我導航到http:// localhost:3000/user/5836aadf7911f7725ce3cd2b /,那麼導航到http:// localhost:3000可能是因爲它找不到任何匹配項。如果我從路徑中刪除parent_id:':parent_id/following',它可以正常工作 – doorman