Size: a a a

Советский Angular

2021 May 24

IB

Igor Bodnar in Советский Angular
каждый раз ору с названия
источник

ЕУ

Евгений Удалов... in Советский Angular
бгг
источник

S

Smooth Operator in Советский Angular
источник

S

Smooth Operator in Советский Angular
как ты до этого дошел
источник

IT

Ivan Tretyak in Советский Angular
Собрание гребанных анимешников
источник

IT

Ivan Tretyak in Советский Angular
Осуждаю
источник

S

Smooth Operator in Советский Angular
опа, токсик
источник

IT

Ivan Tretyak in Советский Angular
И что есть посмотреть интересного из нового?
источник

AI

Alex Inkin in Советский Angular
Из нового — Полиморфеус 4.0 :) В Angular 12 добавился сеттер на контекст:
https://github.com/angular/angular/blob/master/packages/core/src/view/refs.ts#L267-L269
Казалось бы мелочь, но раньше там был дикий код на мутации контекста, из-за которого я вместо своей структурной директивы использовал компонент с ngTemplateOutlet внутри, чтоб этот шматок не писать самому. Теперь же я всё это дело дропнул и в 4.0 полиморфеусу больше не нужен дополнительный DOM элемент:
<ng-container
 *polymorpheusOutlet="content as primitive"
>
 Template for <strong>{{primitive}}</strong>
</ng-container>
🎉
источник

AI

Alex Inkin in Советский Angular
Приглашаю заценить, если кто не видел:
https://github.com/TinkoffCreditSystems/ng-polymorpheus
Это штука для кастомизации на стероидах, объединяющая ngTemplateOutlet, ngComponentOutlet, интерполяцию и функции в качестве контента.
источник

K🦋

Kir 🦋 JS in Советский Angular
Крут, закинул в канал
источник

S

Smooth Operator in Советский Angular
И теперь контекст не мутируете?
источник

AI

Alex Inkin in Советский Angular
В компонентах "типа мутируем" - там создаётся прокси. Иначе на каждое изменение контекста весь компонент будет заново пересоздаваться, а там часто какие-нибудь флажки меняются типа active: true/false. Как и раньше подпинываем в нём проверку изменений, только теперь у нас componentRef свой, не приходится к приватному полю ngComponentOutlet обращаться.
источник

AI

Alex Inkin in Советский Angular
Т.е. по факту не мутируем, конечно, там и раньше копия создавалась и мы полагались как раз на мутанта из ngTemplateOutlet. Сложно объяснить, в общем )
источник

S

Smooth Operator in Советский Angular
а не хотите намутить там какой-нибудь обсервабл например?
источник

AI

Alex Inkin in Советский Angular
Вроде там с прокси довольно органично вышло всё, не думаю, что стоит усложнять. Для пользователей всё работает очень просто.
источник

AI

Alex Inkin in Советский Angular
Что ты шаблон сделаешь:
<ng-template let-active="active">
 {{active}}
</ng-template>
что компонент, даже в OnPush
@Component({
 template: '{{context.active}}'
})
export class MyComponent {
 constructor(
   @Inject(POLYMORPHEUS_CONTEXT) readonly context
 ) {}
}
всё обновляется и не пересоздаётся
источник

S

Smooth Operator in Советский Angular
но если я в конструкторе класса присвою классу проперти из контекста...
источник

S

Smooth Operator in Советский Angular
чиста подстветил
источник

AI

Alex Inkin in Советский Angular
То у тебя не будет обновляться ) Думаю, что если ты дошёл до динамического контекста, то ты уже знаешь, что делаешь и не будешь так писать. А иначе там ребята напишут, как они любят, в шаблоне прям объект:
context: { $implicit: value } и на каждую проверку изменений он будет пересоздаваться и динамический компонент, соответственно, тоже.
источник