我正在通过http客户端获取数据,我如何以BehaviorSubject
而不是Observable
的形式返回值?我有一个订阅,即definitions$
在异步模板中可观察到。现在,我要检查ngClass中的定义是否为空,因此需要BehaviorSubject
来完成此操作。
definitions$: Observable<ObjectDefinition[]>;
// ...
return this.http.get('http://localhost:8080/api/search?term=abc')
.pipe(
map(result => {
console.log(result);
return result['body'];
})
);
模板
<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>
组件使用可观察的http://
this.definitions$ = this.searchInput.valueChanges
.pipe(
tap(value => console.log('input')),
//startWith(''),
debounceTime(500),
//distinctUntilChanged(),
switchMap(value => this.definitionService.searchTerm(value))
);