【发布时间】:2017-06-12 14:51:37
【问题描述】:
我有点挣扎于可观察的。我的 api 中有一些数据,我将其作为可观察的(使用行为主体并作为 get 属性公开)输入(异步)返回给我的子组件。如果我直接使用安全操作符将数据绑定到 UI,那就没问题了。因为每当它被订阅时,UI 都会更新。但我的问题是我想做一些操作,比如过滤和映射到那个输入。我需要在加载组件时完成此操作,如果我尝试这样做,我会得到未定义,因为 observable 尚未订阅。我需要一个有效的解决方案。我不想再次将其订阅到我的类组件中,因为我已经使用异步在 html 中订阅了它。
【问题讨论】:
-
做你需要做的,在回调里面:
.subscribe(data => {this.data = data; // do stuff here with data}) -
我提到过,如果我不想在 ngOnInit() 中订阅它。有没有办法做到这一点
-
啊,我错过了最后一行,抱歉。如果您想进行过滤和映射,您需要订阅组件来执行此操作。或者,您也许可以翻转它并执行此答案的后半部分之类的操作? stackoverflow.com/a/37867462/6294072 ?
-
好的,我必须订阅它。无论如何,我已经想出了做到这一点的方法。我正在做的是,我正在初始化我的输入的默认值,然后传递给孩子。这样它就不是未定义的并且初始值是可见的。
标签: angular