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 imports
return 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.