如何在不触发新发射的情况下获得发射的可观察值的值?我想在 ngClass 标记中获取可观察对象的值。
我尝试使用 pipe tap 来获取通过 switchMap 的值,但它没有记录值。然后我可以将 trueIfDefinitionsLength
用于 ngClass 条件。
this.definitions$.pipe(
tap(value => console.log('timer result =', value))
)
Observable 订阅了 |异步
模板:
<input [ngClass]="{'input-has-results': trueIfDefinitionsLength > 0}"
[formControl]="searchInput">
<ng-container *ngIf="definitions$ | async as definitions">
<div class="format-options" *ngIf="definitions.length > 0">
<div *ngFor="let definition of definitions" class="search-result">
<div>{{definition.name}}</div>
<div>{{definition.description}}</div>
</div>
</div>
</ng-container>
组件
this.definitions$ = this.searchInput.valueChanges
.pipe(
tap(value => console.log('input')),
//startWith(''),
debounceTime(500),
//distinctUntilChanged(),
switchMap(value => this.definitionService.searchTerm(value))
);
最佳答案
改用BehaviorSubject
。它有一个方法 getValue()
来获取当前值而不发出新值。
关于angular - 如何在不触发新发射的情况下获取可观察值的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57673412/