Как выделить только одно или последнее значение Observable? - PullRequest
0 голосов
/ 17 октября 2018

Родительский HTML:

<ng-container *ngFor="let doc of documents">
    <child [clickEvent]="eventSubject.asObservable()" [document]="doc"></child>
 </ng-container>

Родительский класс:

eventSubject: Subject<boolean> = new Subject<boolean>();
onclick(event)  {
    this.eventSubject.next(event)
}

Дочерний класс:

@Input() keyEvent: Observable<boolean>;

this.keyEvent
    .subscribe(res => {
      console.log(res);
    })

Поскольку я связываю событие внутри * ngFor, оноотправляет значение столько же, сколько длина моего массива.Важно, чтобы я получил последнее или одно значение из числа излучаемых в наблюдаемой.Что можно сделать?

Я пытался использовать операторы take и last, но они завершают поток.

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Используйте BehaviorSubject вместо Subject.Он имеет getValue() метод, который дает вам текущее значение.

Проверьте этот ответ

0 голосов
/ 17 октября 2018

Вы можете поместить условие if в HTML

Решение 1

 <ng-container *ngFor="let doc of documents; last as last">
    <child *ngIf= "!last" [document]="doc"></child>
    <child *ngIf= "last" [clickEvent]="eventSubject.asObservable()" [document]="doc"></child>
 </ng-container>

Решение 2

Просто обработайте его в файле ts.Внесите следующие изменения -

в html

<ng-container *ngFor="let doc of documents; last as last">
    <child [clickEvent]="handlClick(last)" [document]="doc"></child>
 </ng-container>

в ts

handlClick(isLast){
   if(isLast){
     return eventSubject.asObservable();
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...