2017-02-14 13 views
7

Tôi biết cách tạo nhiều lớp phân giải cho một tuyến đường nhưng tôi không biết cách chuyển kết quả của một giải pháp sang một giải pháp khác.Vượt qua kết quả của một giải pháp khác với Angular Router

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

Nếu BookResolve trả về một đối tượng cuốn sách, làm thế nào bạn có thể vượt qua đối tượng cuốn sách để các BookTitleResolve?

Tôi có dịch vụ tiêu đề tìm kiếm khóa tiêu đề trong dữ liệu. Tôi cần để có thể tạo tiêu đề sách từ đối tượng sách. Điều này cần phải năng động.

+0

Các bạn đã cố gắng truy cập vào 1 giá trị giải quyết từ resolver 2 cùng một cách một thành phần không, tức là từ 'this.route. dữ liệu'? – AngularChef

Trả lời

2

Giải quyết trong cùng một thành phần chạy đồng thời nhưng giải quyết trong bố mẹ sẽ hoàn thành trước trẻ em để cách dễ nhất để đạt được điều này là tạo tuyến đường mẹ với mục đích giải quyết sách.

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

Lưu ý rằng cha mẹ không hiển thị thành phần và con chứa đường dẫn trống, tuyến đường phải hoạt động tương tự.

Sau đó, bên trong thực hiện BookTitleResolve của bạn, bạn có thể lấy từ con đường cha mẹ:

class BookTitleResolve { 
    resolve(route: ActivatedRouteSnapshot) { 
     // Do something with route.parent.data.document 
    } 
} 
Các vấn đề liên quan