你好我使用的是6号角和敏捷材料,并且有一个字符串数组,这些字符串显示在一个垫选择形式字段中。
如果用户选择一个元素,然后选择另一个,我需要跟踪什么是先前值以及什么是新值。

到目前为止,我已经可以使用$ event.value获取当前值,但是我还没有找到存储或获取先前值的方法。

   <mat-select  placeholder="Choose..." (selectionChange) ="checkTitle($event.value);">
            <mat-option *ngFor="let option of Titles; trackBy: trackByFn" [value]="option.title">
              {{option.title}}
            </mat-option>
    </mat-select>


到目前为止,我还没有想出如何解决此问题的想法。
感谢帮助。

最佳答案

您可以通过将值推入主题中来处理先前值和当前值,并使用成对运算符观察该主题。该运算符将发出流的先前值和当前值。
https://www.learnrxjs.io/operators/combination/pairwise.html

例:


export class YOU_COMPONENT{

  private data: Subject<any> = new Subject<any>();

  checkTitle(value){
    this.data.next(value);
  }

  observeDataChange():Observable<[]>{
     // this return an observable of an array that contains [previous, current] data
     return this.data.asObservable().pipe(pairwise());
  }

}



09-17 15:16