angular - 在 Angular 模板中渲染 Observable 对象属性

标签 angular angular7 angular-observable

我有以下 Angular 7 组件:

export class PostComponent implements OnInit {

  post$: Observable<PostModel>;

  constructor(private postService: PostService) { }

  ngOnInit() {

    this.post$ = postService.getPostById(25);

  }

}

在组件模板上我使用了以下内容:

<p>Title: {{post$.title}}</p>

标题显示为空,我认为是因为 post$ 是 Observable。

当使用数组时,例如posts$: Observable<PostModel[]>我将 observable 传递给模板,使用 ngFor 可以正常工作.

但是在这种情况下我应该怎么做呢?

可通过数组观察

当使用数组的 Observable 时,我在 HTML 模板中有以下内容:

<div *ngIf="(posts$ | async)?.length > 0; else loading">
  <ng-container *ngFor="let post of posts$ | async">
    {{post.title}}
  </ng-container>
</div>
<ng-template #loading>
  Loading ...
</ng-template>

这允许我在加载时显示加载消息。

最佳答案

你必须使用异步管道:

<p>Title: {{(post$ | async).title}}</p>

关于angular - 在 Angular 模板中渲染 Observable 对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54185959/

相关文章:

angular - 单元测试选择菜单更改事件(未获取更新值)

angular - 如何在 ElementRef (nativeElement) 中设置 HTML 内容?

html - 根据值更改图标颜色

javascript - 使用 Angular2 将 JSON 发布到 Node 服务器返回 404 URL 未找到

angular - 如何知道 Observable 的更改值或最终值是否已设置

angular - 如何在 Angular 7 中设置 CdkVirtualScrollViewport 的初始索引(位置)

c# - Angular 7 到 dotnetcore 2.1 web api 调用没有响应

javascript - 完全没有在 Observable 订阅方法中被调用

angular - 为什么我在使用 rxjs 时得到 mergeMapTo is not a function?

angular - 完成所有多个服务调用后执行代码