angular - 在定义组合的 observables 之前分配它们的结果
问题描述
我有一个通过异步管道打印可观察值的组件。
初始化组件时,会调用服务中的一个方法,该方法异步地为一系列可观察对象赋值。我需要该服务发出这些可观察值组合的结果,以便组件打印。
未通知该组件。我认为问题在于,当模板被订阅时,我正在组合的 observables 尚未定义。有什么办法可以使这项工作?
解决方案
- 首先,要模拟 HTTP 调用,您需要使用
of()
+delay()
。 - 您的组件也是根组件,因此您永远不会在
@Input
字段中获得价值。 - 主要问题是您需要组合
init()
和initTransformedValue()
方法,因为如果您调用init()
它对可观察对象(或未定义)执行最新组合,您将在稍后重新分配initTransformedValue()
,因此正确的顺序是1. 调用 initTransformedValue(),2. 调用init(), 3. 使用结果$。为了避免复杂性,最好将所有这些东西组合到 1 个方法getTransformedValue()中,该方法返回所需的 observable。
Stackblitz 演示。 希望有帮助。
推荐阅读
- webpack - Lit-element 和 webpack
- angularjs - 从 AngularJS1.2 升级到 Angular
- reactjs - 仍然可以将 ReactJS 应用程序上传到 App Store 吗?
- sorting - 将字母出现与比较器进行比较
- python - 当文件准备好时,在 Django 中的 UI 上显示字符串
- java - Mongo/Spring boot 从集合中删除列表中的所有文档
- alexa - Alexa Trivia Skill - 测验
- javascript - 在javascript响应上使用时videojs播放按钮不起作用
- python - Python中的密码验证
- php - DELETE 在 Laravel 数据表中不起作用