首页 > 解决方案 > 在 Angular 的一个组件中使用多个共享服务订阅

问题描述

在 Angular 中,我使用多个共享服务将道具传递给某些组件。在我的 ngInit 中,我订阅了这些共享服务中的每一个,并在有值时进行我的 api 调用,但我刚刚意识到,如果两个值发生变化,它会进行两次 API 调用,然后是随机的,稍后加载的信息是一个加载。

this._sharedService.sharedData1.subscribe(value => {
  if (value) {
    this.data1 = value;
    //API call w/ value 1
  }
})

this._sharedService.sharedData2.subscribe(value => {
  if (value) {
    this.data2 = value;
    //API call w/ value 1 & value 2
  }
})

但是当 sharedData 1 稍后加载时,我的 API 调用仅使用数据 1,而不是使用数据 1 和数据 2。我需要所有共享服务在进行此 API 调用之前注册它们的值。但是如果我在订阅之外进行 API 调用,它不会注册,除非只在 init 上。当我的 sharedService 获得新值时不注册。

请问有什么帮助吗?谢谢!

标签: angular

解决方案


推荐阅读