html - 如何使用 html 中的异步管道获取可观察值的嵌套值

标签 html angular typescript observable

我在 Angular 中有一些 html block ,我想用可观察值的一些嵌套值填充,例如:

  <div class="container" *ngIf="(myObservable$ | async)  as myObservable">
    <span>{{ myObservable.middleNest.value1 }}</span>
    <span>{{ myObservable.middleNest.value2 }}</span>
  </div>

有没有办法在容器标签中定义变量,以便我能够通过 middleNest.value1 和 middleNest.value2 获取嵌套值(确保中间嵌套的路径完全非空)?鉴于在某些情况下值可能会深度嵌套,因此必须在跨度中写入到中间嵌套的整个路径似乎并不正确。

最佳答案

您可以在 Controller 中使用 RxJS pluck 运算符从可观察的响应中仅返回特定属性

Controller

export SomeComponent implements OnInit {
  myObservable$: Observable<any>;

  ngOnInit() {
    this.myObservable$ = this.someService.getData().pipe(
      pluck('middleNest')
    );
  }
}

现在,您在 async 发射中拥有了 middleNest 对象。

<div class="container" *ngIf="(myObservable$ | async) as middleNest">
  <span>{{ middleNest?.value1 }}</span>
  <span>{{ middleNest?.value2 }}</span>
</div>

也像 @uiTeam324 所示,您可以使用安全导航运算符 ?. 来避免潜在的未定义错误。

关于html - 如何使用 html 中的异步管道获取可观察值的嵌套值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64913773/

相关文章:

html - 页脚元素垂直对齐

html - 每个页面的背景不同?

angular - 如何使用 Angular 2 访问 API?

javascript - typescript 和 ...args

html - IE8 的 CSS3 框阴影效果?

JavaScript 或 jQuery 动态显示表单输入

angular - 在 Angular 的一项服务中使用 "ElementRef"时出错

loops - Angular 2 对象中的数据绑定(bind)

typescript - `babel-plugin-react-css-modules` typescript 类型检查

css - 在 React 中使用 typescript 创建主题