Добро пожаловать на @ ngrx / data.
Я предлагаю вам просмотреть фрагмент кода внутри ngOnInit
. Здесь вы вызываете метод loadMore
, который подразумевает новый запрос Http при каждом обновлении коллекции.
Ваш код должен выглядеть следующим образом:
ngOnInit() {
// keep a local reference to observable of entities
this.todos$ = this.todoService.entities$;
// request a first load on view init
this.loadMore();
}
Таким образом, код внутри TodosResolver
на самом деле не нужно.
Если вы хотите реализовать функцию Load More , вам нужно отреагировать на другое событие (например, прокрутку или нажатие кнопки), а затем снова вызвать loadMore
.
Ваши наблюдаемые, такие как entities$
или loaded$
, являются просто конвейерами данных, и вы не должны отправлять действие при появлении новых значений. Если действительно необходимо, предпочтительнее написать @ngrx/effect
, это сделано для этого.
Если вы хотите изменить данные или их формат, вы можете использовать для этого канал Observable
, но не для вызова новое действие
Например, это нормально:
this.todos$ = this.todoService.entities$.pipe(
map(entities => entities.map(entity => ({
...entity,
authorName: entity.authorFirstname + ' ' + entity.authorLastName
})));
);
Надеюсь, мой ответ ясен и поможет вам немного.