2017-09-27 35 views
2

我目前正在嘗試解決Angular 4中的路由問題。我希望URL包含參數數組,因此它看起來像這樣:/#/WF001A;operationIds=146469,146470。此URL由Angular使用[routerLink]生成。參數需要從組件中訪問(這應該不是一個問題,我猜)。在Angular 4中使用數組參數的路由

問題是 - 我不知道如何爲它創建路線。我的嘗試:

  • {path: 'WF001A/:operationIds', component: WF001AComponent}
  • {path: 'WF001A/:operationIds[]', component: WF001AComponent}
  • {path: 'WF001A:operationIds[]', component: WF001AComponent}
  • {path: 'WF001A;:operationIds[]', component: WF001AComponent}

編輯: 這是鏈接是如何產生的:

<a href="#" [routerLink]="['/WF001A', {operationIds:[146469, 146470]}]">test</a>

編輯2: 組件類:

export class WF001AComponent implements OnInit { 
    public title = 'WF001A'; 

    public constructor (private WF001AService: WF001AService, private route: ActivatedRoute) {} 

    public ngOnInit(): void { 
     this.route.paramMap.subscribe(params => { 
      // This is never executed, for route is not recognized 
      let myArray=params.getAll('operationIds'); 
      console.log(myArray); 
     }); 
    } 
} 
+0

您可以在模板中添加routerLink參數嗎? –

+0

添加了我在模板中使用的routerLink。 – lemon

+0

添加組件片段。 – lemon

回答

0

我假設你有ActivatedRoute對象的組成部分,是這樣的:

constructor(
    ..., 
    private route: ActivatedRoute) { } 

我認爲WF001A是參數名稱, 所以你可以做這樣的事情:

this.route.paramMap.subscribe(params => { 
    let i=0; 
    let myArray=params.getAll('operationIds'); 
} 

有關可選參數的更多信息,請參閱official documentation

+0

我認爲這並不能解決問題。我在控制檯中得到這個錯誤:'錯誤:不能匹配任何路由。網址段:'WF001A; operationIds = 146469,146470',這意味着該路線未準備好陣列。 – lemon

+0

由於有新信息更新:) –

+0

我試圖使用你的例子,但不幸的是它永遠不會執行,因爲Angular實際上不知道任何匹配'WF001A; operationIds = 146469,146470'或'WF001A/operationIds = 146469 ,146470'。然而,你是正確的處理部分,發送這樣的參數後:'WF001A/146469,146470',我已經能夠獲得這些數據。 – lemon