2016-07-05 5 views
4

と部分ルートは私のアプリでは、いくつかのURLは、私はその従業員の連絡先にリンク[routerLink]をそれぞれ有する、すべての従業員のリストを表示私のサイドバーで、フォーム相対リンク/ routerLink

/department/:dep/employee/:emp/contacts 

を取る

<ul> 
    <li> 
     <a [routerLink]="['/department', 1, 'employee', 1, 'contacts']"></a> 
    <li> 
    <li> 
     <a [routerLink]="['/department', 1, 'employee', 2, 'contacts']"></a> 
    <li> 
    ... 
</ul> 

しかし、このアプローチでは、すべてのパラメータ(上記の例ではdepなど)を含む完全なパスを提供する必要がありますが、これはかなり面倒です。私は本当にについて、そのビューでdepartmentを気にしないので、ルートの一部だけを提供する方法は、そのよう

<a [routerLink]="['employee', 2, 'contacts']"></a> 

として(department一部せずに、そこにあると私の気持ちは、これは懸念の分離に反するということですとにかく)?

答えて

8

これは動作するはずです。先頭の/は絶対パスとなります(./を指定すると)、現在のルートに対する相対ルートになります。 ../(または../../以上)を使用して、親または親の親に対して相対的にルーティングすることもできます。

+0

'。/'でも相対ルーターリンクでも動作しません。ページロード後に一度動作しますが、親コンポーネントがURLの一部を変更した場合、相対的な 'routerLink'を持つコンポーネントに対して生成された 'href'は更新されず、前のルートにとどまります。 https://github.com/erasethis/angular2-routingのレポを参照してください。 –

+0

Plunkerが再現して調査する必要があると思います。https://angular.io/resources/live-examples/quickstart/ts/plnkr.html ''の最初の要素は ''ですか? –

+1

「routerLink」が定義されているコンポーネントのルートに相対的だと思います。 '/ parent/child/grandchild1'ルートを起動し、'/parent'コンポーネント(OP用のサイドバーを含む)に 'routerLink'が定義されている場合、' grandchild2'へのリンクは 'routerLink' 「子」を含める、例えば。 '[routerLink] =" [child、grandchild2] "'です。 – adamdport

2

私は
ビュー..あなたがそうのようにそれを行うことができますあなたは[routerLink]でそれを行うことができますかどうかを知りませんが

<ul> 
    <li> 
     <a (click)="onViewDetails(id)">Details</a> 
    <li> 
    ... 

コンポーネント

construct(private router: Router, private route: ActivatedRoute){ 
} 
onViewDetails(id){ 
this.router.navigate([id], {relativeTo: this.route}); 
} 

/従業員
/employee /:id

+2

これは 'routerLinkActive'を破ります。 – adamdport

+0

@adamdportどのバージョンのAngularを参照していますか? Angularは私の答え以来ずっと変わっています:Dルータの詳細については公式の文書をチェックできます.thnx –

関連する問題