首页 > 解决方案 > 在定义组合的 observables 之前分配它们的结果

问题描述

我有一个通过异步管道打印可观察值的组件。

初始化组件时,会调用服务中的一个方法,该方法异步地为一系列可观察对象赋值。我需要该服务发出这些可观察值组合的结果,以便组件打印。

未通知该组件。我认为问题在于,当模板被订阅时,我正在组合的 observables 尚未定义。有什么办法可以使这项工作?

堆栈闪电战

标签: angularrxjsobservable

解决方案


  • 首先,要模拟 HTTP 调用,您需要使用of()+ delay()
  • 您的组件也是根组件,因此您永远不会在@Input字段中获得价值。
  • 主要问题是您需要组合init()initTransformedValue()方法,因为如果您调用init()它对可观察对象(或未定义)执行最新组合,您将在稍后重新分配initTransformedValue(),因此正确的顺序是1. 调用 initTransformedValue(),2. 调用init(), 3. 使用结果$。为了避免复杂性,最好将所有这些东西组合到 1 个方法getTransformedValue()中,该方法返回所需的 observable。

Stackblitz 演示。 希望有帮助。


推荐阅读