首页 > 解决方案 > 如何指定“异步为”变量的类型?

问题描述

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();
  }

为什么是这样 ?

标签: angularobservable

解决方案


你错过了括号。如果getDevices是一个函数,那么

<div *ngIf="(deviceStoreService.getDevices() | async) as devices">

推荐阅读