angular - 无法让 Observable 输出到组件
问题描述
几周以来,我一直在开发 Ngrx 应用程序,试图让这个可观察的应用程序输出到组件。最初,我认为我的ngrx 实体和reducer 有问题,所以我现在尝试将这一特定调用从ngrx 框架中取出并直接调用到输出。它仍然行不通。顺序如下:
this.pomos$ = this.pomoQuery.getTaskPomos(snapshot.params.id);
从app/tasks/containers/selected-task-page.ts 调用并订阅输出然后传递到
this.pomos$.subscribe(pomos => {
this.pomos = pomos;
});
一个显示组件app/tasks/components/pomo-tracker.ts
<div class="pomo-container mat-elevation-z8">
<div class="pomo-header">
<mat-list>
<mat-list-item>
This is for the pomos
</mat-list-item>
</mat-list>
<mat-list *ngFor="let pomo of pomos">
<mat-list-item>{{ pomo.notes }}</mat-list-item>
</mat-list>
</div>
</div>
无论我尝试什么,它都不会绑定到组件和输出。我尝试添加 json 管道。我尝试关闭异步管道。我试图以不同的方式订阅 observable。我已经尝试过管道和映射到它。我完全不知所措。我对 rxjs 比较陌生。如您在此处看到的,observable 将值输出到控制台。
我不断遇到的错误之一是错误:找不到类型为“object”的不同支持对象“[object Object]”。NgFor 仅支持绑定到 Iterables,例如 Arrays。
我确信这与返回的 json 对象有关,但为什么这个 observable 不输出,而其他所有对象都输出。这就是为什么我尝试将 json 管道添加到输出但也不起作用的原因。
如果这里有人愿意帮助克服我花了几天时间克服的最后一道障碍,我将不胜感激。我的代码在 Stackblitz 上
要重现错误:
- 使用测试/测试登录
- 来自 Sidenav:查找任务
- 搜索 Python
- 将任务添加到集合。
- 点击播放按钮。5秒后会超时
- 输入备注并提交
- 刷新页面:在控制台查看错误。
先感谢您。
解决方案
我做了一些修改,从你的最后一步没有发现任何错误。
action AddPomoSuccess {payload: {…}, type: "[Pomo] Add Pomo Success"}
这是我的修改:
import { Observable } from 'rxjs';
pomos$: Observable<Pomo[]>;
并在您的模板中:
<mat-list *ngFor="let pomo of pomos$ | async">
<mat-list-item>{{ pomo.notes }}</mat-list-item>
</mat-list>
希望这会奏效!让我知道您是否可以解决问题。
推荐阅读
- java - 如何解决 Java 证书问题?
- c++ - 是否有任何替代方法来实现 WebRTC SFU,只有 1 个上传流?
- javascript - 如何更改可编辑 iFrame 中文本的颜色?
- javascript - 单击锚链接时平滑滚动
- heroku - Heroku 和 Cloudflare 集成“没有这样的应用程序”
- json - 将 Postgresql jsonb 列与行数据连接起来
- javascript - Discord.js 对服务器上的所有文本通道进行排序
- protocol-buffers - 删除 protobuf 中的字段
- javascript - BigNumber.js 简单的减法给出错误的输出
- ios - XCODE:标签约束表现得很奇怪