我如何配置ngrx/data,当我从entityService调用getAll(示例)10秒间隔时使用http。我想全部更改(删除所有不存在的数据)。我体验到它会合并而不是删除已经不存在的东西。
如果可能的话,我会避免使用 clearCache 功能。
export interface IItem {
id: number;
data: string;
}
export class MyEntityService extends EntityCollectionServiceBase<IItem> {
constructor(serviceElementsFactory: EntityCollectionServiceElementsFactory) {
super("entityKey", serviceElementsFactory);
}
// I tried all MergeStrategy but it is not solution for me.
//
// getAll(options: EntityActionOptions = { mergeStrategy: MergeStrategy.IgnoreChanges }): Observable<IItem[]> {
// return super.getAll(options);
// }
}
export class MyDataService extends DefaultDataService<IItem> {
constructor(http: HttpClient, httpUrlGenerator: HttpUrlGenerator) {
super("entityKey", http, httpUrlGenerator);
}
getAll(): Observable<IIncidentItem[]> {
return this.http.get<IItem[]>('/api/items');
}
}
export class AnyComponent implements OnDestroy {
readonly count: Observable<number>;
private readonly sequenceUpdate;
constructor(private myEntityService: MyEntityService) {
this.count = this.myEntityService.entities$.pipe(
map((data: IItem[]) => data.length)
);
// all refresh
this.sequenceUpdate = setInterval(() => {
this.myEntityService.getAll();
}, 10000);
}
ngOnDestroy(): void {
clearInterval(this.sequenceUpdate);
}
}
1.运行 我从http获得以下(示例)数据。
[
{ id: 1, data: '1' },
{ id: 2, data: '2' },
{ id: 3, data: '3' },
{ id: 4, data: '4' },
]
count
是4。没关系。
2.运行 我从http获得以下(示例)数据。
[
{ id: 1, data: '1' },
{ id: 2, data: '2' },
{ id: 3, data: '3' },
{ id: 4, data: '4' },
{ id: 5, data: '5' },
]
count
是5。没关系。
3.运行 我从http获得以下(示例)数据。
[
{ id: 1, data: '1' },
{ id: 2, data: '2' },
{ id: 3, data: '3' },
{ id: 4, data: '4' },
]
count
是5。这不好。不删除 id 5,它存在于entityCache
.