【问题标题】:Angular2 Getting route's params with promisesAngular2用承诺获取路线的参数
【发布时间】:2019-04-17 11:00:24
【问题描述】:

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

constructor(private _route: ActivatedRoute) {}

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

但是它没有做任何事情。如果我用subscribe 交换toPromise().then,它工作正常。知道为什么它不起作用吗?我在项目的许多其他地方都使用过toPromise().then,效果很好。

【问题讨论】:

    标签: angular typescript


    【解决方案1】:

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

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

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

    constructor(private _route: ActivatedRoute) {}
    
    ngOnInit() {
      this._route.params.first().toPromise().then(data => {
         ...
      })
    }
    

    first 需要导入。在较新的 RxJs 版本中,first 需要像这样 pipe(first()) 包装在 pipe

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-09
      • 2017-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多