异步管道在非常简单的Angular应用中不起作用

时间:2019-04-13 14:49:28

标签: javascript angular

首先,我在Stackblitz https://stackblitz.com/edit/angular-th31vj上有一个示例,您可以在其中检查我的应用程序。

这是一个非常简单的应用程序,其中有一个服务(StoreService)以RxJS方式管理数据和2个组件:AppComponent和Catalog Component。 AppComponent包含类别和路由器出口的列表。 我还想在类别列表下显示当前类别。

那是我的AppComponent的样子

<h3>Categories</h3>
<ul>
  <li *ngFor="let category of store.categories$ | async">
    <a [routerLink]="['/catalog', category.id]">{{ category.name }}</a>
  </li>
</ul>
<p> Selected category: {{ store.selectedCategory$.name | async }} </p>
<router-outlet></router-outlet>
import { Component, OnInit } from '@angular/core';

import { StoreService } from './store.service';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent implements OnInit  {
  name = 'Angular';

  constructor(public store: StoreService) {}

  ngOnInit() {
    this.store.selectedCategory$.subscribe(category => console.log('App component received new category', category));
  }
}

由于某些原因,selectedCategory $没有显示在页面上,但是我可以在控制台中看到它。我会很高兴为您提供任何帮助。谢谢。

1 个答案:

答案 0 :(得分:5)

您需要将async管道应用于可观察对象,然后然后从中获取名称:

{{ (store.selectedCategory$ | async).name }}

更新后的StackBlitz:https://stackblitz.com/edit/angular-av1pbn