2017-02-15 16 views
4

私は1つのパラメータを使用して簡単なルートを持っていますちょうどAppComponentテンプレートでそれを表示する:私はのような動的なタイトルを持つようにしたい場合は角度2ルートparamが

<h1>{{ title }}</h1> 

は問題があります。どのように追加することができますか? param(:id)または変数をデータタイトルプロパティにルーティングしますか?

{ 
    path: 'item/:id', 
    component: ItemComponent, 
    data: {title: 'Item detail #' + :id } 
} 
+0

私はそうは思いません。しかし、 'data.title'パラメータを"青写真 "として保持し、コンポーネント内から検索/置換することができます。 – AngularChef

+0

ItemComponent内で置き換えることはできますか? – dontHaveName

+0

私はいくつかのコードで答えを投稿しました。あなたが 'router.events'を使って経路データ/ paramsを抽出する理由は何ですか? (単に 'route.data'と' route.params'の代わりに) – AngularChef

答えて

2

ような何か私がコメントで言ったように、あなたは青写真としてdata.titleのparamを維持し、コンポーネント内から動的な部分を置き換えることができます。

ルート宣言:data.title

{ 
    path: 'item/:id', 
    component: ItemComponent, 
    data: { title: 'Item detail [id]' } 
} 

、私は、交換を容易にするために[id]を書いていますが、交換する文字列をdelimitateしたいのですがどんな記号を使用して自由に感じます。

その後、コンポーネントで:

export class AppComponent { 
    title: string; 

    constructor(private route: ActivatedRoute) {} 

    ngOnInit() { 
    const titlePattern = this.route.snapshot.data['title']; 
    const id = this.route.snapshot.params['id']; 
    this.title = titlePattern.replace('[id]', id); 
    } 
} 
+0

同じパターンのxxルートが存在する可能性があるため、AppComponent内で置き換えても意味がありません。各FeatureComponent内でそれを変更すると、サービスを作成することに決めた方が良いでしょう。 – dontHaveName