Как указать тип переменной async as? - PullRequest
0 голосов
/ 30 мая 2019

Я получаю ошибку 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();
  }

Почему это так?

1 Ответ

0 голосов
/ 30 мая 2019

Ты скучаешь по паренсу.Если getDevices является функцией, то

<div *ngIf="(deviceStoreService.getDevices() | async) as devices">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...