你好我使用的是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());
}
}