Как уже говорилось, оператор flatMap
сам не завершает свой наблюдаемый источник.Вы используете this.route.params
в качестве источника наблюдения, который является долгоживущим - он никогда не завершается сам по себе.
Чтобы получить уведомление complete
, вы можете использовать оператор, такой как take
.Он переиздаст количество элементов, которые вы передадите в качестве параметра, и завершите их позже.Например, если вы просто хотите получить текущий маршрут и не заинтересованы в дальнейших уведомлениях о вашем наблюдаемом источнике, используйте take(1)
, например:
this.route.params
.take(1)
.flatMap((params: Params) => {
Также обратите внимание, что рекомендуемый способ сделать этов RxJS 6+ используются конвейерные операторы.Это будет выглядеть так:
this.route.params.pipe(
first(),
mergeMap((params: Params) => {
...
})
Я также заменил операторы на более новые рекомендуемые варианты.