#angular
#angular
Вопрос:
У меня есть наблюдаемые данные:
public documents$: Observable<SubjectRequestDocument>;
Что я повторяю в шаблоне:
<ng-container *ngIf="documents$ | async as document">
<app-checkbox (click)>="setSelected(document)"</app-checkbox>
</ng-container>
Когда пользователь нажимает app-checkbox
, я вызываю:
setSelected(document) {
document.selected = !document.selected;
}
Итак, как получить все выбранные документы из наблюдаемых данных после щелчка:
getSelected() {
// HERE?
}
Комментарии:
1. Должен ли я использовать
BehaviorSubject
?
Ответ №1:
Вы можете использовать оператор tap, чтобы получить все элементы документа примерно так:
component.ts
documents$.pipe(tap(item=>{ this.selectedItem = item;}));
Затем внутри метода getSelected вы можете отфильтровать выбранный элемент.
getSelected() {
this.selectedItem.filter(item=>item.selected);
}
Комментарии:
1. Не работает, это дает мне неопределенный в
tap()
2. Может быть, это потому, что его нет
.subscribe();
?3. поскольку вы используете асинхронный канал, асинхронный канал будет внутренне подписываться, так что это не проблема, получаете ли вы какую-либо другую ошибку?
4. Я создал небольшой пример проверки this:stackblitz.com/edit/angular-ivy-rrhxfp?file=src/app /…