2017-04-23 41 views
0

假設我轉到組件的URL爲localhost:4200/myComponent/id。無論ID是什麼,它在組件視圖中都顯示爲一個字符串。檢查角路由參數ID失敗,爲空或未定義的字符串

此代碼需要從先前的組件的ID參數([routerLink] = 「[ '/ myComponent的',ID]」),並提取值內部使用這種方式:

myComponent.ts

getURLId(): void { 

    this.route.params 
     .map(
     params => params['id']) 
      .subscribe(
      ((id) => this.assignID(id)), 
      err => { 
       this.successData = false; 
       this.errorMessage = err 
      }); 

    } 

將「id」的這個值與NULL和UNDEFINED進行比較,目標自己處理錯誤。當訪問本地主機:4200/myComponent的/故意留下ID留空,我的代碼應該知道,route.params是否有「身份證」未定義的值,並停止:

assignID(id: string): void { 

    // THIS COMPARISON IS NOT CATCHING THE SCENARIO MENTIONED ABOVE 
    if(id === null || id === undefined) { 

     // DECLARE ERROR AND RAISE FLAG 

    } else { 

     // DO THINGS WITH "id" HERE... 

    } 
    } 

的問題是,本地主機:4200/mycomponent/不會爲比較產生正確的結果(id === null或undefined)。

「id」值輸出的Console.log undefined應該如此。

什麼給?

+1

路由怎麼樣?我認爲用空ID角路線甚至不應該選擇此路線與ID。 –

回答

0

請確保您有配置正確路由

{ path: 'mycomponent/:id', component: MyComponent }, 

要得到我們不需要映射它的路線PARAMS。我們可以直接訂閱它。

this.route.params.subscribe(params => { 
    this.assignID(params['id']); 
}); 
相關問題