2017-07-25 63 views
0

有沒有辦法引用路由數據中的路徑參數?Angular 2/4:如何在路徑數據中引用路徑參數?

我有一個看起來像這樣的通用路由: { path: "Servicing/:type/:id", component: BaseComponent, data: { title: "Servicing" } },

我使用title屬性頁面(和<title>標籤)的頂部設置標題。因此,而不是有寫到哪這個標題的處理必須知道它應該在前面加上type路徑PARAM某些網頁上有一些特殊的代碼,我希望做這樣的事情: { path: "Servicing/:type/:id", component: BaseComponent, data: { title: <type> + " Servicing" } },

+0

我下面貼的答案,但你能解釋一下「爲什麼「以這種方式操縱菜單,而不是將活動路線拉入組件並在那裏操作模型數據?我想我不明白你想在組件架構之外完成什麼。 – joshrathke

+0

謝謝喬希。當你使用ASP.net核心作爲服務器而不是快遞時,這似乎是一種相當常見的搜索引擎優化方法。我不記得我遵循的是哪個確切的例子,但Mark Pieszak從角度製作的啓動器做了同樣的事情(檢查路由):https://github.com/MarkPieszak/aspnetcore-angular2-universal/blob/master/Client /app/app.module.ts 我會重新說明問題。菜單的一部分並不意味着讓你失望,我只是在左上方有一個導航漢堡包菜單,旁邊還顯示了你當前所在頁面的標題。但我只想設置頁面標題 –

回答

0

你真的應該被操縱菜單內容在它所在的組件內。路由器不是「真正」構建來處理路由之外的邏輯。也就是說最簡單的做法是在更改路線時更新菜單組件中的內容。

您需要使用路由器ActivatedRoute和攻到它的參數,這樣導入:

basecomponent.component.ts

import { ActivatedRoute } from '@angular/router'; 

constructor(
    private _ActivatedRoute: ActivatedRoute 
) {} 

ngOnInit() { 

    // Subscribe to route parameter observable. 
    this._ActivatedRoute.params.subscribe(
     _Params => { 
      this.type = _Params['type']; 
      this.id = _Params['id']; 
     } 
    ) 
}