Я новичок в 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)
})
);
}
Как я могу отфильтровать существующий список наблюдаемых без отправки нового вызова на сервер?