2017-02-14 10 views
7

私はルートのために複数の解決クラスを作成する方法を知っていますが、ある解決の結果を別の解決に渡す方法はわかりません。角度ルータで別の解決結果を渡す

// Example Route 
{ 
    path: 'book/:id', 
    component: BookComponent, 
    resolve: { 
    document: BookResolve, 
    title: BookTitleResolve 
    } 
} 

ブックオブジェクトを返しますBookResolveは、どのようにあなたがBookTitleResolveにその本のオブジェクトを渡すことができますか?

私は、キータイトルを探すタイトルサービスを持っています。ブックオブジェクトから本のタイトルを生成できるようにする必要があります。これは動的である必要があります。

+0

あなたはすなわちthis.route 'から、第二のレゾルバからコンポーネントと同じ方法を第一解決された値にアクセスしようとしています。データ? – AngularChef

答えて

2

同じコンポーネント内で同時に解決されますが、親で解決されるので、これを達成する最も簡単な方法は、本を解決する目的で親ルートを作成することです。

{ 
    path: 'book/:id', 
    resolve: { 
    document: BookResolve 
    }, 
    children: [ { 
    path: '', 
    component: BookComponent, 
    resolve: { 
     title: BookTitleResolve 
    } 
    } ] 
} 

親がコンポーネントをレンダリングしないと子供は、いくつかの追加の定型にもかかわらず、その空白のパスが含まれ、ルートが同じ機能を行動しなければならないことに注意してください。

は、その後、あなたのBookTitleResolveの実装内で、あなたは親ルートから取り出すことができます。

class BookTitleResolve { 
    resolve(route: ActivatedRouteSnapshot) { 
     // Do something with route.parent.data.document 
    } 
} 
関連する問題