2017-02-14 2 views
7

Я знаю, как создать несколько классов разрешений для маршрута, но я не знаю, как передать результат одного решения другому решению.Передайте результат одного решения другому с помощью Angular Router

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

Если BookResolve возвращает объект книги, как вы можете передать эту книгу объект в BookTitleResolve?

У меня есть служба названия, которая ищет ключ заголовок в данных. Мне нужно создать заголовок книги из объекта книги. Это должно быть динамичным.

+0

Вы пытались получить доступ к 1-й разрешенному значению от 2-го распознавателя таким же образом компонент делает, то есть от 'this.route. data'? – 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 
    } 
} 
Смежные вопросы