Angular 2 Routerは頻繁に更新されていたので、このトピックの古い質問はもう有効ではありません。私は、この問題に対する解決策を探していると私は1つを見つけるためにまだ持っている...子コンポーネントから親のルータ出口を角度2でターゲティングしていますか?
だから、私の問題は、子コンポーネントから親のコンポーネントルーター-コンセントを目標としています。
たとえば、私たちはこの1つ(我々のアプリのルート)のようなAppComponentを持っている:
import { Component } from '@angular/core';
import { ROUTER_DIRECTIVES } from '@angular/router';
import {HeaderComponent} from './header.component';
import {LibraryComponent} from './library.component';
@Component({
selector: 'my-app',
template: `
<header></header>
<library></library>
<router-outlet></router-outlet>
`,
directives: [ROUTER_DIRECTIVES,HeaderComponent,LibraryComponent],
providers: []
})
export class AppComponent {
}
そしてHeaderComponentは次のようになります。
import { Component } from '@angular/core';
import { ROUTER_DIRECTIVES } from '@angular/router';
@Component({
selector:'header',
template:'<a routerLink="test" routerLinkActive="active">go to TEST</a>',
directives:[ROUTER_DIRECTIVES]
})
export class HeaderComponent{}
私app.routesのルックスの要部このように:
const routes: RouterConfig = [
{
path: 'test',
component: TestComponent
}
];
正確に私はここで間違っていますか? "test"へのリンクをクリックすると、ルータコンセントが空のままである間に、新しい "test" divが作成されます(これはTestComponentのセレクタのためです)。
もう1つ質問ROUTER_DIRECTIVESをインポートして、それを親コンポーネントで既に行っている場合は、子コンポーネントHeaderComponentのディレクティブにも供給する必要があるのはなぜですか?
親を参照 '' [routerLink] = "[ '../試験']" 実際です。親がルートの場合、 '[routerLink] =" ['/ test'] "'を使用することもできます。それ以外の場合は '' [']' 'を '']に追加する必要があります。そうでなければ '' ['/test '] ''は配列として解釈されず、 '[]'で動作しない文字列として解釈されます。 'routerLink = '/ test" ' –
@GünterZöchbauerこれをより良い答えにしてくれてありがとう。最近のアップグレードでこれが変更されたのですか、それとも私はdocでそれを逃しました。特に現在のルートと文字列属性からの相対ナビゲーションサポート 'routerLink ="/test "' –
これらのパスプレフィックスはすべてのルータでサポートされていました(私は後期アルファからAngular2を使用しています)。実際に私は文字列を直近で直接渡すことについてしか知りませんでした。これが以前にサポートされたかどうかはわかりません。 –