Hey I have tried that following bit of code :
constructor(private _route: ActivatedRoute) {}
ngOnInit() {
this._route.params.toPromise().then(data => {
...
})
}
However it doesn't do anyhting. If I swap toPromise().then
by subscribe
it works fine. Any idea why it wouldn't work ? I have used toPromise().then
in many other places in my project and it works just fine.
_route.params
emits more than one event. When a route change only changes the parameter value of a route then the component is not re-created by the router but instead just another params
value emitted.
Therefore using toPromise()
is probably not a good idea but it's possible, for example using first()
so that the observable completes after the first event and therefore also the promise returned by toPromise()
completes.
Without .first()
the promise completes when you navigate away from the route (not verified).
constructor(private _route: ActivatedRoute) {}
ngOnInit() {
this._route.params.first().toPromise().then(data => {
...
})
}
first
needs to be imported. In newer RxJs version first
needs to be wrapped in pipe
like this pipe(first())