如何在 Angular 中将 ngFor 与 Observable 一起使用?

How do I use ngFor with an Observable in Angular?

我在使用 *ngFor 从我的可观察对象发出数据时遇到问题。

我的数据服务中有以下调用:

    completedTasks(): Observable<Array<Todo>> {
       return this.aHttpService.get<Array<Todo>>(
              'http://localhost:3000/todos?complete=true');
    }

然后,我有这个 属性 来获取数据:

  get completedTodos(): Observable<Array<Todo>> {
     return this.todoDataService.completedTasks();
  }

然后,我使用下面的HTML来获取数据:

 <li *ngFor="let todo of completedTodos | async" >
   ... stuff here
 </li>

但是,虽然我可以通过 Postman 看到 API 调用中有 JSON,但我的列表中没有任何内容。

我很乐意调用 completedTasks return 一个数组,如果我能弄清楚如何将一个可观察对象转换为一个数组(如果这甚至有意义....)

更新:

我更改了代码,确实有 completedTasks 而不是 completedTodos(谢谢),现在我得到:

您需要 subscribe 一个 observable 才能从中获取任何数据。

你的代码基本正确。这是 StackBlitz 上的一个工作示例,它输出对象的 Observable 数组。

我唯一不同的是在 ngOnInit() 期间将 completedTodos 指定为视图模型 属性。这可以防止在每个更改检测周期创建可观察对象。

或者,如果您想使用 getter,您可以使用 OnPush 的 ChangeDetectionStrategy。

[更新]

我更改了示例代码以从以下位置检索待办事项列表:https://jsonplaceholder.typicode.com/ 因此它发出了实际的 GET 请求。