Как мне сконфигурировать ngrx / data, чтобы при вызове getAll (пример) 10 секунд вставлялись из entityService для использования 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
.