2016-01-12 7 views
2

У меня есть компонент BookDetailComponent, который отображается для URL-адреса /books/:id. Есть ли способ в угловом 2 маршрутизаторе, чтобы убедиться, что этот компонент открыт только после того, как Book с заданным id извлекается с сервера?Угловой 2 маршрутизатор разрешает запрос сервера перед открытием компонента

Я ищу аналогичные функции, такие как ui-router resolve в Угловом 2 роутере.

/*** BookComponent ***/ 
@RouteConfig([ 
    {path: "/books/:id", component: BookDetailComponent, as: "BookDetail"}, 
]) 

export class BookComponent { 
} 


/*** BookDetailComponent ***/ 
export class BookDetailComponent { 

    book:Book; 

    constructor(private bookService:BookService, 
       private routeParams:RouteParams) { 
    } 


    ngOnInit() { 
    let id = this.routeParams.get("id"); 
    this.bookService.getBook(parseInt(id)) 
     .subscribe(book => this.book = book.json()); 
    } 
} 

ответ

5

Да, реализующий интерфейс OnActivate и возвращения обещание объекта вы ждете, чтобы нагрузка:

https://angular.io/docs/js/latest/api/router/OnActivate-interface.html

+0

Спасибо. Есть ли способ, который мы можем разрешить для «Наблюдаемого»? – TheKojuEffect

+0

В документации ничего не сказано об этом, но вы можете проверить его или вы можете вызвать метод .toPromise() наблюдаемого. – Langley

+0

Эй, знаете ли вы, что разрешенное значение может быть введено в компонент? – TheKojuEffect

Смежные вопросы