Angular 2 router resolve with Observable Angular 2 router resolve with Observable angular angular

Angular 2 router resolve with Observable


Don't call subscribe() in your service and instead let the route subscribe.

Change

return this.searchService.searchFields().subscribe(fields => {

to

import 'rxjs/add/operator/first' // in importsreturn this.searchService.searchFields().map(fields => {  ...}).first();

This way an Observable is returned instead of a Subscription (which is returned by subscribe()).

Currently the router waits for the observable to close. You can ensure it gets closed after the first value is emitted, by using the first() operator.