2016-10-19 58 views
2

嘿,我已经尝试过的代码如下位:Angular2获取路线的PARAMS与承诺

constructor(private _route: ActivatedRoute) {} 

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

但是它不会做anyhting。如果我用subscribe替换toPromise().then它工作正常。任何想法,为什么它不会工作?我在我的项目中的许多其他地方使用toPromise().then,它工作得很好。

回答

5

_route.params发出多个事件。当路由更改仅更改路由的参数值时,组件不会由路由器重新创建,而只会发射另一个值。

因此,使用toPromise()可能不是一个好主意,但它使用first()是可能的,例如,以便观察到完成第一个事件,因此也被toPromise()完成返回的承诺后。

没有.first()当您离开路线(未验证)时,承诺完成。

constructor(private _route: ActivatedRoute) {} 

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

first需要导入。