Size: a a a

2020 April 03

]🌶

][oroshiy b0ber 🌶 in Angular Moscow
Igor Lezhnev
Всем привет, подскажите как правильно в template проверить instanceof (и вообще есть ли какой то стандартный подход).

В компоненте есть Observable к примеру

public data$: Observable<OneModel | SecondModel>;
к примеру возвращают
{
id: 1,
name: 'test'
} (это OneModel)

Но может вернуть
{
id: 1,
name: 'test2',
last: 'test3'
} (это SecondModel)


в шаблоне будет
data$ | async as currentData

но использовать currentData.last - не выйдет (будет ругаться Angular при проверке шаблона)
Optional chaining ?
источник

OK

Oleg Klimakov in Angular Moscow
Igor Lezhnev
Всем привет, подскажите как правильно в template проверить instanceof (и вообще есть ли какой то стандартный подход).

В компоненте есть Observable к примеру

public data$: Observable<OneModel | SecondModel>;
к примеру возвращают
{
id: 1,
name: 'test'
} (это OneModel)

Но может вернуть
{
id: 1,
name: 'test2',
last: 'test3'
} (это SecondModel)


в шаблоне будет
data$ | async as currentData

но использовать currentData.last - не выйдет (будет ругаться Angular при проверке шаблона)
По идее да, как написали выше currentData?.last должно работать
источник

Вキ

Вертихвост キバ in Angular Moscow
Igor Lezhnev
Всем привет, подскажите как правильно в template проверить instanceof (и вообще есть ли какой то стандартный подход).

В компоненте есть Observable к примеру

public data$: Observable<OneModel | SecondModel>;
к примеру возвращают
{
id: 1,
name: 'test'
} (это OneModel)

Но может вернуть
{
id: 1,
name: 'test2',
last: 'test3'
} (это SecondModel)


в шаблоне будет
data$ | async as currentData

но использовать currentData.last - не выйдет (будет ругаться Angular при проверке шаблона)
источник

Вキ

Вертихвост キバ in Angular Moscow
А по хорошему, надо заводить алгебраические типы
источник

IL

Igor Lezhnev in Angular Moscow
Вертихвост キバ
А по хорошему, надо заводить алгебраические типы
да проблемы определить в ТС нет)
источник

IL

Igor Lezhnev in Angular Moscow
Oleg Klimakov
По идее да, как написали выше currentData?.last должно работать
ругаетсо(((
источник

IL

Igor Lezhnev in Angular Moscow
src/app/modules/name/name.component.ts:13:16
       13   templateUrl: './name.component.html',
                         ~~~~~~~~~~~~~~~~~~~~~~~~
       Error occurs in the template of component NameComponent.
   src/app/modules/name/name.component.html:40:35 - error TS2339: Property 'test' does not exist on type 'Test1Model | Test2Model'.
источник

IL

Igor Lezhnev in Angular Moscow
https://www.bennadel.com/blog/3696-discriminated-unions-dont-seem-to-work-in-angular-9-0-0-next-5-when-fulltemplatetypecheck-is-enabled.htm

Вот пример моей проблемы, но решение откровенно говоря так себе...
источник

Вキ

Вертихвост キバ in Angular Moscow
сделай алгебраические типы, просто ты сейчас пытаешься — это впихнуть костыль, который не даст строгой типизации
источник

АО

Алексей Охрименко in Angular Moscow
Вертихвост キバ
сделай алгебраические типы, просто ты сейчас пытаешься — это впихнуть костыль, который не даст строгой типизации
Discriminated Unions костыль?
источник

Вキ

Вертихвост キバ in Angular Moscow
Алексей Охрименко
Discriminated Unions костыль?
нет
источник

АО

Алексей Охрименко in Angular Moscow
ок, сори значит не понял немного -.-
источник

АО

Алексей Охрименко in Angular Moscow
источник

IL

Igor Lezhnev in Angular Moscow
по сути да, сейчас пробую через алгебраический тип данных что бы темплейт валидацию пройти
источник
2020 April 05

АО

Алексей Охрименко in Angular Moscow
источник
2020 April 06

IL

Igor Lezhnev in Angular Moscow
voted for angular
источник

АО

Алексей Охрименко in Angular Moscow
Igor Lezhnev
voted for angular
источник

a

angular_ru in Angular Moscow
У нас для вас сегодня несколько новостей:

🎼 Angular v9 song :)
✌️ Анонс расширения Angular сообщества в Discord
🎉 Розыгрыш лицензий JetBrains

🎼 Angular v9 song :)

Расчихлите наушники и познакомьтесь с шикарной пародией на песню Билли Айлиш.
http://amp.gs/KzXo

✌️Анонс расширения Angular сообщества в Discord

Пока все работают из дома, приглашаем вас присоединиться к нашему сообществу в Discord для обсуждения вопросов по Angular и общения на различные темы. В голосовых чатах вы можете найти единомышленников для:

— детального обсуждения вопроса
— проведения мастер класса по Angular
— поделиться своим опытом с коллегами
— позавтракать и поужинать вместе с сообществом
— альтернатива телеге для тех, кто не любит писать
— выпить пивка и пофлеймить

Будем ждать вас в Discord. Присоединяйтесь!

🎉 Розыгрыш лицензий JetBrains

В связи с карантином пришлось отменить Angular Moscow митап. Но JetBrains любезно согласились дать нам 3 лицензии на ЛЮБОЙ продукт JetBrains для розыгрыша в чате. Еще раз спасибо им за поддержку Angular сообщество в такое не простое время.

Победители будут выбраны с помощью могучего Math.random(). Если в течении суток вы не выйдите на связь ваша лицензия будет снова разыграна среди оставшихся участников. В опроснике будет пару вопросов про Angular. Для участия в розыгрыше обязательно правильно на них ответить.

Форма для регистрации в розыгрыше http://amp.gs/KzXQ

Победители будут объявлены в течении недели.
источник

АО

Алексей Охрименко in Angular Moscow
источник

IL

Igor Lezhnev in Angular Moscow
angular_ru
У нас для вас сегодня несколько новостей:

🎼 Angular v9 song :)
✌️ Анонс расширения Angular сообщества в Discord
🎉 Розыгрыш лицензий JetBrains

🎼 Angular v9 song :)

Расчихлите наушники и познакомьтесь с шикарной пародией на песню Билли Айлиш.
http://amp.gs/KzXo

✌️Анонс расширения Angular сообщества в Discord

Пока все работают из дома, приглашаем вас присоединиться к нашему сообществу в Discord для обсуждения вопросов по Angular и общения на различные темы. В голосовых чатах вы можете найти единомышленников для:

— детального обсуждения вопроса
— проведения мастер класса по Angular
— поделиться своим опытом с коллегами
— позавтракать и поужинать вместе с сообществом
— альтернатива телеге для тех, кто не любит писать
— выпить пивка и пофлеймить

Будем ждать вас в Discord. Присоединяйтесь!

🎉 Розыгрыш лицензий JetBrains

В связи с карантином пришлось отменить Angular Moscow митап. Но JetBrains любезно согласились дать нам 3 лицензии на ЛЮБОЙ продукт JetBrains для розыгрыша в чате. Еще раз спасибо им за поддержку Angular сообщество в такое не простое время.

Победители будут выбраны с помощью могучего Math.random(). Если в течении суток вы не выйдите на связь ваша лицензия будет снова разыграна среди оставшихся участников. В опроснике будет пару вопросов про Angular. Для участия в розыгрыше обязательно правильно на них ответить.

Форма для регистрации в розыгрыше http://amp.gs/KzXQ

Победители будут объявлены в течении недели.
Время не указано)
источник