Я новичок в Angular с Akita.
У меня есть приложение, в котором пользователи загружаются и устанавливаются в магазине. у всех пользователей начальное свойство imageUrl установлено, например: «http://testxxxxxx». Компонент запрашивает хранилище для всех пользователей и передает вызов метода, который проходит через каждого человека, делает вызов API, чтобы получить ответ изображения «blob». из API и обновите хранилище с помощью imageUrl = 'blob:http:2fk2fjadkf', а компонент задает ‹img src='imageUrl'.
Но по какой-то причине метод внутри внешнего наблюдаемого много раз зацикливается. не знаю почему.
Вот мой код:
Составная часть:
peopleToShow$ = this.peopleFacade.peopleToShow$;
Component.html использует peopleToShow$ и свойство imageUrl каждого человека. Прямо сейчас он не принимает обновленный URL-адрес большого двоичного объекта, который установлен в this.loadImagesAsBlobs.
Фасад:
peopleToShow$ = this.peopleQuery.peopleToShow$
.pipe(
tap((people) => this.loadImagesAsBlobs(people))
);
private loadImagesAsBlobs(people: Person[]) {
people.forEach((person) => {
if (!person.isUrlChecked) {
this.imageDataService
.getAndStoreImageOnClient(person.imageUrl)
.pipe(
take(1),
switchMap((safeUrl) => {
this.updatePersonWithBlobImageUrl(person.id, safeUrl);
return EMPTY;
}),
catchError(() => {
this.updatePersonWithBlobImageUrl(person.id, null);
return EMPTY;
})
)
.subscribe();
}
});
}
private updatePersonWithBlobImageUrl(id: number, blobUrl: SafeUrl) {
this.peopleStore.updatePersonWithBlobImageUrl(id, blobUrl as string);
}
Спасибо