首页 > 解决方案 > 如何根据可观察对象设置角度垫按钮属性?

问题描述

我有以下代码:

<button mat-button [disabled]="offline() | async"
    [textContent]="scanning() ? 'Stop' : 'Start'"
    (click)="scanning() ? onScanStop() : onScanStart()">
</button>

两者offline()scanning()返回Observable<boolean>
我不确定async在 的情况下如何使用管道,scanning()对于offline().

标签: angularrxjsobservableasync-pipe

解决方案


新答案:

所以经过一些试验,我认为你不能阻止在你的后面 .ts 组件文件中添加一些代码。_scanning我们将使用模板中调用的变量:

<button mat-button [disabled]="offline() | async"
    [textContent]="_scanning ? 'Stop' : 'Start'"
    (click)="_scanning ? onScanStop() : onScanStart()">
</button>

并在您的 .ts 文件中:

  _scanning: boolean = null;
  ngOnInit(): void {
    this.scanning().subscribe(res => this._scanning = res);
  }

老答案:

试试这个:

<ng-container *ngIf="scanning | async as _scanning">
    <button mat-button [disabled]="offline() | async "
        [textContent]="_scanning ? 'Stop' : 'Start'"
        (click)="_scanning ? onScanStop() : onScanStart()">
    </button>
</ng-container>

准备好scanning后将可观察的结果存储在变量中,并像任何其他变量一样使用变量_scanning_scanning


推荐阅读