смотря зочем
@Dimonina Привет, есть идеи?
нужно решение принять
если это значение нужно в методе например при клике куда-то, можно сделать isAdmin$ | async as isAdmin и передать это значение в метод
isAdmin$ | async as isAdmin + (editClick)="onEdit(isAdmin )" ?
главное чтобы скоуп общий был
а если разный?
можно нарулить директиву типа *tuiLet из Тайги, чтобы можно было юзать as не только на *ngIf и на какой-то общий ng-container повесить
ВО! а вот чем эти шаманства лучше простой, доброй подписки?
если не забудешь отписаться, то думаю ничем, async делает всё то, что ты можешь делать сам, просто дает тебе возможность не думать об этих вещах
Думаю зависит где тебе данные больше нужны, если только темплейт то async pipe норм
первая нотка разума в этом вопросе)
async просто инструмент для более удобной работы с подписками. Если будешь правильно отписываться, то можешь его и не юзать, просто кода будет однотипного больше
У меня есть стрим на который я делаю две подписки, одну в темплейте и в классе, так как Тимлид говорит что всякие effects в tap плохо делать🤷♂️
Две подписки звучит не прикольно
Зато, .setValue в subscribe блоке а не в tap
не понимаю прост что плохого в tap, для чего он еще нужен если не для сайд эффекта
Вот и я о том же))
this.state$ = combineLatest(p1, p2, p3).map(([p1,p2,p3]) => ({ p1, p2, p3 }) -> ng-container ngIf = "state | async as state> {{ state.p1 .... }}
по контексту уже можно 3 проперти эти вынести в 1 обьект
да, возможно. вы предлагаете передавать данные из шаблона в контроллер?
Контроллер это что?)
Эдинственный минус это надо следить чтобы у них сразу было значение при старте
Я написал про дефолтные велью выше
Можно ещё <ng-container *ngIf="{a: a$ | async, b: b$ | async} as state" >
Только на ngIf, я ж уточнил
Пояснити
понятно. но мне кажется это не удобным. ща буду думать как обойтись без этого.
Ну я б даже не следил, это просто дефолтная штука задавать велью
ну а зачем мне 3 раза дергать markForCheck с каждого async Pipe
Ну и что, он просто будет вызываться
А сombineLatest разве три раза не будет то же самое делать?
Ну в целом верно, 3 подписки получается. Но combineLatest не выстрелит, если кто-то из этой тройки не стрельнет
combineLatest внутри наверное тоже 3 подписки делает
Хз даже, верю что нет
Почему не будет? combineLatetes(a$, b$, c$) | async a$ - emit -> markForCheck b$ - emit -> markForCheck Разве не так будет?
А как тогда он емитит без подписки?
Обсуждают сегодня