私はAngular2の学習を始めました。このような非常に一般的な "リスト詳細"スタイルページを作成したいと考えています:http://xgrommx.github.io/rx-book/index.html。左のバーで項目をクリックすると、中央の詳細ビューへのナビゲーションが開始され、左のバーは引き裂かれません。この効果を達成する最良の方法は何ですか?Angular2はコンポーネントから兄弟コンポーネントにナビゲートし、最初のコンポーネントを破棄することはありません。
私は自宅のコンポーネントを起動すると、リストコンポーネント(child1のは)すぐにロードされ、それが名前(名前のみ)を取得するために、外部APIを呼び出しますのアイテムのリスト左側の項目名をクリックすると、新しいDetail-componentが作成されます。詳細コンポーネントは、そのngOnInitメソッドの項目の詳細を取得します。私は補助ルートを使って2つの子コンポーネントを同じページにネストしようとしましたが、うまくいかないようです。以下のようなリストの成分で
<h2>Home</h2>
<router-outlet></router-outlet>
<router-outlet name="detail"></router-outlet>
そして、私は詳細ビューにナビゲートする方法は、(移動呼んでいる):マイホームルートを次のようになります。
export const HomeRoutes: RouterConfig = [
{
path: '',
redirectTo: '/home',
pathMatch: 'full'
},
{
path: 'home',
component: HomeComponent,
children: [
{
path: '',
component: ListComponent
},
{
path: ':item',
component: DetailComponent
outlet: 'detail'
}
]
}
];
そして、私のhome.component.ts
に、私は単純にこれを持っていますこの:
onSelect(item : string) {
this.router.navigate(['/detail', item]);
}
しかし、毎回私は詳細ビューが表示されない項目のいずれかをクリックして、それはこのようなエラーが表示されます。
Error: Uncaught (in promise): Error: Cannot match any routes: 'home/item'
.
私は補助ルートを使用しているのですか?この機能を実現する方法はありますか?
"/ホーム/(リスト//詳細:詳細" の括弧の後ろに何らかの理由はありますか?単に "home/list /:item"の代わりに? –
確かに答えをreasonで更新しました。私はこれを説明した別のqをリンクしますが、時間がかかるかもしれません –
問題は私に兄弟パスがないことです。私は、ホームコンポーネントと同じパスを持つ2つの兄弟コンポーネント(リストコンポーネント)のみを持っています。他の兄弟コンポーネント(詳細)には、パラメータ:itemをとるパスがあります。この場合、どのようにURLを書きますか? –