javascript - Angular 模板未在 RxJS 可观察更改上更新
问题描述
我在一个包含输入字段作为搜索的 Web 应用程序上工作。它的值被提供给返回带有数据数组的 Observable 的 Subject。此数据在模板中呈现。所有这些都有效。没有的是,当没有任何结果时隐藏模板的结果部分。对应的代码部分:
private querySubject = new Subject<string>();
...
public searchResult: Observable<XyzDTO[]> = this.querySubject.pipe(
debounceTime(250),
distinctUntilChanged(),
switchMap((queryText) => {
if (queryText.length > 2) {
return from([this.xyzService.search(queryText)]);
} else {
return from([]);
}
})
);
<ng-container *ngIf="searchResult | async as results">
Results: {{results.length}}
<mat-card *ngFor="let result of results" class="m-2" (click)="goToDetails(result.id)">
...
输入超过 2 个字符会使结果按预期显示。但是,将字符数减少回 2 或更少不会改变视图。调试显示return from([]);
正在调用。知道为什么模板不能正确更新吗?谢谢!
解决方案
您的返回类型错误,字符长度 <= 2。请of
改用from
.
else {
return of([]);
}
推荐阅读
- sql-server - 使用自制软件安装的驱动程序版本
- python - 尝试发布时出现服务器错误,但在删除/获取/放入 django + vue js 时没有
- android-recyclerview - Xamarin.Android如何记住recyclerview中项目的位置
- python - 机器学习 模型过拟合
- amazon-web-services - 获得使用 2-Protocol Hours 账单。有人知道 AWS 中的这些费用吗?
- angular - 角度 - 如何使用开关将输入字段更改为只读
- flutter - 在 Build 方法中使用 FutureBuilder
- jupyter-notebook - 无法建立到笔记本服务器的连接
- kotlin - Kotlin - 字符文字不符合预期类型 Int
- r - 如何为列表中的项目提供顺序名称?