// Данные приходят сюда
cardImage$ = this.card.pipe(// GET IMAGE);
Шаблон:
<ng-container ngif="card$ | async">
<ng-container ngif="cardImage | async">IMG</ng-container>
</ng-container>
Проблема в том что если данные пришли в card$ карточка открывается. А вот картинка не отображается.
Если все переписать так:
public card;
public image;
this.service.card$.subscribe((e => card = e);
this.card.subscribe((e => image = e);
Шаблон:
{{card}}
{{image}}
В таком варианте все прекрасно работает.
Кто может объяснить как разруливать асинхронщину в шаблоне правильно?
а зачем там тебе вложенность?
первый if в шаблоне создает контейнер с данными. в нем уже другой if который помещает картинку. как-то так.
как-раз чтобы как-то полотенце укоротить разбил на несколько потоков. В один поток будет очень сложно
не.. я имел ввиду что если все разбито на потоки..то потом в итоговый снова собрать и в шаблоне только одну подписку иметь..
что заюзать чтобы собрать в один пайп? сначала прослушиваем card в ней подписываемся на второй поток image и мапим обратно уже с картинкой в новый new$: Observable?
https://www.danywalls.com/combine-async-pipes-in-angular-how-to-avoid-multiple-pipes
идеально - это мой кейс
combineLatest уже давно умеет принимать на вход объект
объект Observable?
combineLatest({ player: this.getPlayer(), stats: this.getStats() });
минус подохода в том что если хотя бы один поток умрет или вернет ошибку - то карточка не подтянется. Например местами нет картинки. Поэтому изначально был в этом и смысл что карточку подтягивать асинхронно разными потоками
да.. но при условии что произошло исклбючение всегда можно оф.нуть пустую карту и вывести ошибку
т-е всегда обрабатывать исключения и ошибки - чтобы не ломать поток? и вернуть скажем new Error и в шаблоне проверять если это так - то показать в нужном блоке вместо картинки ошибку?
было бы хорошо показать часть данных карточки и часть подгружать в процессе - но блин - возвращаемся к проблеме
Обсуждают сегодня