如何在模板(动作)函数中传递异步变量?

时间:2016-10-28 07:25:33

标签: asynchronous angular ionic2

我需要将异步变量传递给函数。 像这样:

<div class="team" (click)="addToFavorite((match | async)?.id)">

我当然有错误。

  

分析程序错误:动作表达式中没有管道。

也许有一种方法可以在JavaScript中转换异步变量?

4 个答案:

答案 0 :(得分:6)

简单变量和没有任何可观察量的另一个选择是将变量的值写入隐藏输入:

<div *ngIf="(match | async)?.id">
    <input  #myControl [value]="(match | async).id" type="hidden" />
    <div class="team" (click)="addToFavorite(myControl.value)">
</div>

答案 1 :(得分:3)

这是我解决的方法:

<div *ngIf="(match | async) as match" class="team" (click)="addToFavorite(match.id)">

简短,简单且有效。

答案 2 :(得分:1)

怎么样:

<div class="team" (click)="addToFavorite(match)">

然后在你的代码中:

addToFavorite(obs: Observable<any>) {
  obs.take(1).subscribe(value => {
    addToFavoriteById(value.id);
  });
}

答案 3 :(得分:0)

似乎你需要使用辅助方法:

<div class="team" (click)="onClick(match)">
class MyComponent {
  onClick(event) {
    event.then(val => this.addToFavorite(val?.id);
  }
  addToFavorite(val) {
  }
}