Size: a a a

Angular - русскоговорящее сообщество

2020 January 17

Е

Евгений in Angular - русскоговорящее сообщество
Danil
подскажите, у меня есть директива которая проверяет роль юзера, и в зависимости от этого отрисовывает dom. теперь ролей у юзера стало несколько и получается, что отрисовывается по несколько одно и тоже. как сделать нормально проверку
видимо у тебя что то типа
if(role1) addSomethingToDom;
if(role2) addSomethingToDom;
if(role2) addSomethingToDom;

верно?
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Danil
if (this.currentUser.roles instanceof Array) {
           this.currentUser.roles.map(v => {
               if (this.appCanAccess.indexOf(v['name']) != -1) {
                   this.viewContainer.createEmbeddedView(this.templateRef);
               }
           })
       }

вот так
зачем в map то это?
источник

D

Danil in Angular - русскоговорящее сообщество
а как тогда?
источник

D

Danil in Angular - русскоговорящее сообщество
а в директиву ="['role1', 'role2', 'role3']"
источник

DT

Dmitry Teplov in Angular - русскоговорящее сообщество
Galeups
вот кстати почему то все их используют, как синглтоны. Буду благодарен, если предложите кейс, где они используются, как не синглтон. По идее же они служат для обмена данными между компонентами, если он будет не синглтон, то он не будет в себе хранить данные для этого.
Хотя когда писал понял )))) сервис может просто получать данные для компонента
сервис может использоваться внутри структуры компонентов локально, тогда для каждого инстанса верхнеуровневого компонента нужен свой инстанс сервиса
источник

C

Campry in Angular - русскоговорящее сообщество
как можно применить async pipe без ngIf или ngFor?
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Danil
а как тогда?
вместо map, используйте find чтоб проверить есть ли там нужная роль. А потом уж рисовать если нужно
источник

D

Danil in Angular - русскоговорящее сообщество
а  если несколько ролей?
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Campry
как можно применить async pipe без ngIf или ngFor?
[value]="objservable$ | async"
источник

G

Galeups in Angular - русскоговорящее сообщество
@dopusteam @itplk  понял спасибо. Но я чет практически никогда не использую сервис локально в компоненте (( надо меняться
источник

DT

Dmitry Teplov in Angular - русскоговорящее сообщество
Galeups
@dopusteam @itplk  понял спасибо. Но я чет практически никогда не использую сервис локально в компоненте (( надо меняться
это удобно бывает, чтобы не городить бойлерплейт в компоненте
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Danil
а  если несколько ролей?
Вам же нужен сам факт наличия роли? или там для каждой роли нужно рисовать разные элементы?
источник

S

Smooth Operator in Angular - русскоговорящее сообщество
Danil
а как тогда?
if (this.appCanAccess.isAllowed(this.currentUser.roles)) {
  this.viewContainer.createEmbeddedView(this.templateRef)
}
источник

S

Smooth Operator in Angular - русскоговорящее сообщество
вот так
источник

D

Danil in Angular - русскоговорящее сообщество
Oleg Safonov
Вам же нужен сам факт наличия роли? или там для каждой роли нужно рисовать разные элементы?
для каждой роли по-разному. например один и тот же див может быть для 1 и 2 роли, а для других нет. и получается, что он повторно рисуется для 2 роли
источник

S

Smooth Operator in Angular - русскоговорящее сообщество
Galeups
@dopusteam @itplk  понял спасибо. Но я чет практически никогда не использую сервис локально в компоненте (( надо меняться
или не надо
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Galeups
@dopusteam @itplk  понял спасибо. Но я чет практически никогда не использую сервис локально в компоненте (( надо меняться
нужно использовать по необходимости, а не просто использовать чтоб использовать)
источник

G

Galeups in Angular - русскоговорящее сообщество
ну я тупо все сервисы импорчу в модуль
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Danil
для каждой роли по-разному. например один и тот же див может быть для 1 и 2 роли, а для других нет. и получается, что он повторно рисуется для 2 роли
ну типа
let needRenderBlock1 = false;
let needRenderBlock2 = false;

roles.forEach(role => {
   if (#логика#) {
       needRenderBlock1 = true;
   }

   if (#логика#) {
       needRenderBlock2 = true;
   }
});

if (needRenderBlock1) {
}
источник

OS

Oleg Safonov in Angular - русскоговорящее сообщество
Ну и разнести по методам как то можно, чтоб понятнее было,


Там в конце тело блока потерялось)
источник