【发布时间】:2020-08-12 11:39:55
【问题描述】:
我是 Angular 方面的新手,我正在做一个应用程序以更好地学习。我对 http 调用的绑定和过滤结果有疑问。在下面的代码中,我尝试绑定一些数据的列表。
在服务中我有这样的电话
getTestFields(): Observable<Engagement[]> {
return this.httpClient.get<Engagement[]>(this.url + '/testFields');
}
它基本上返回一些测试字段的列表;在 component.ts 我将调用结果绑定到一个可观察变量。
dataSet$: Observable<Engagement[]>;
ngOnInit(): void {
this.dataSet$ = this.service.getTestFields();
}
在 html 模板中,我将数据绑定如下:
<table class="table table-hover" *ngIf="dataSet$ | async as resultSet; else loading">
<tr *ngFor="let item of resultSet" >
<td>{{item.testName}}</td>
<td>{{item.planned}}</td>
<td>{{item.workingOn}}</td>
<td>{{item.reviewed}}</td>
</tr> </table>
直到这里我都没有问题;我成功获取数据并显示在表格中。问题是过滤;我不知道如何过滤已经从服务器获得的数据。我不想让服务器调用过滤数据,我想过滤我已经得到的当前列表。
我尝试了以下类似的方法,但没有成功。
filter() {
this.dataSet$ = this.dataSet$.pipe(
switchMap(data => {
return data.filter(p => p.planned)
})
);
}
如何在不向服务器发送新调用的情况下过滤现有的可观察列表?
【问题讨论】:
标签: angular typescript rxjs angular-pipe