嘿,我已经尝试过以下代码:
constructor(private _route: ActivatedRoute) {}
ngOnInit() {
this._route.params.toPromise().then(data => {
...
})
}
然而,它没有做任何事情。如果我将toPromise().then
换成subscribe
,它就可以了。知道为什么它不起作用吗?我在我的项目中的许多其他地方都使用了toPromise().then
,它运行得很好。
答案 0 :(得分:7)
_route.params
会发出多个事件。当路由更改仅更改路由的参数值时,路由器不会重新创建组件,而是仅发出另一个params
值。
因此,使用toPromise()
可能不是一个好主意,但它是可能的,例如使用first()
,以便observable在第一个事件之后完成,因此也是{{}返回的承诺。 1}}完成。
如果没有toPromise()
,当您离开路线(未经验证)时,承诺就会完成。
.first()
constructor(private _route: ActivatedRoute) {}
ngOnInit() {
this._route.params.first().toPromise().then(data => {
...
})
}
需要导入。在较新的RxJs版本first
中需要包含first
pipe