【问题标题】:observable Input as async and perform operations on Input in child component可观察输入作为异步并在子组件中对输入执行操作
【发布时间】: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


【解决方案1】:

尝试使用resolver,它将在加载组件之前预取数据。

https://angular.io/docs/ts/latest/guide/router.html#!#resolve-guard

【讨论】:

    猜你喜欢
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 2019-05-23
    • 1970-01-01
    • 2017-11-15
    • 2021-11-02
    • 1970-01-01
    相关资源
    最近更新 更多