Angular2使用promises

时间:2016-10-19 09:25:51

标签: angular typescript

嘿,我已经尝试过以下代码:

constructor(private _route: ActivatedRoute) {}

ngOnInit() {
  this._route.params.toPromise().then(data => {
     ...
  })
}

然而,它没有做任何事情。如果我将toPromise().then换成subscribe,它就可以了。知道为什么它不起作用吗?我在我的项目中的许多其他地方都使用了toPromise().then,它运行得很好。

1 个答案:

答案 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