angular - 如何指定“异步为”变量的类型?
问题描述
Argument of type '() => Observable<Device[]>' is not assignable to parameter of type 'Promise<any>'
我从这个标记中得到错误:
<div *ngIf="(deviceStoreService.getDevices | async) as devices">
<tr *ngFor="let device of devices">
<td>{{device.name}} <midi-keyboard [device]="device"></midi-keyboard></td>
</tr>
</div>
我从这个标记中得到了同样的错误:
<tr *ngFor="let device of (deviceStoreService.getDevices | async)">
<td>{{device.name}} <midi-keyboard [device]="device"></midi-keyboard></td>
</tr>
如果我使用标记分配控制器类成员变量,我不会收到错误消息:
<tr *ngFor="let device of (devices | async)">
<td>{{device.name}} <midi-keyboard [device]="device"></midi-keyboard></td>
</tr>
和控制器类:
export class DeviceComponent implements OnInit {
devices: Observable<Array<Device>>;
constructor(
private deviceStoreService: DeviceStoreService,
) { }
ngOnInit() {
this.devices = this.deviceStoreService.getDevices();
}
为什么是这样 ?
解决方案
你错过了括号。如果getDevices
是一个函数,那么
<div *ngIf="(deviceStoreService.getDevices() | async) as devices">
推荐阅读
- angular-google-maps - Angular 谷歌地图——折线适用于 Stackblitz,但不适用于本地
- python - 将具有多行的大文件读入一个字符串,还是一次直接从文件中读取一行更有效?
- c# - C# TCP/IP Socket Client 必须连接超过 30+ 个 socket 服务器,并以 8ms 周期从每个服务器接收 258 个字节
- node.js - 在这个触发的云函数中返回承诺的正确方法是什么
- image - 使用 cv2.imwrite 保存时出现黑色图像
- google-apps-script - 谷歌脚本 API - 如何在特定文件夹中创建谷歌文档
- javascript - 将 html 表单数据传递给 JavaScript 变量
- python-3.x - 这怎么能写得更好/更简单?
- node.js - 您可以对 Discord 机器人进行编程以选择要使用的 TTS 配音演员吗?
- c++ - g++ 和 clang++ 上的 std::normal_distribution 性能差异