使用distinctUntilChanged()方法过滤掉重复数据。
示例代码:
service.ts
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class DataService {
private itemsSubject = new BehaviorSubject([]);
items$ = this.itemsSubject.asObservable();
addItem(item: string) {
const currentItems = this.itemsSubject.getValue();
currentItems.push(item);
this.itemsSubject.next(currentItems);
}
}
component.ts
import { Component, OnInit } from '@angular/core';
import { DataService } from '../data.service';
import { Observable } from 'rxjs';
import { distinctUntilChanged } from 'rxjs/operators';
@Component({
selector: 'app-component',
template: `
{{ item }}
`
})
export class MyComponent implements OnInit {
items$: Observable;
constructor(private dataService: DataService) {}
ngOnInit() {
this.items$ = this.dataService.items$.pipe(distinctUntilChanged());
}
addItem(item: string) {
this.dataService.addItem(item);
}
}