@victor_stone

Angular4 + Nodejs: Как показывать контент только определенной части пользователей?

Есть идея: Показывать определенные пункты меню в SPA лицам, которые имеют значение в DB.
Типа, если у user1, есть поле agency со значением true, то ему показывается раздел в меню: для агентств.

Есть идеи, как это лучше реализовать? Пытался реализовать через директиву, которые отвечает за авторизован пользователь или нет, то вышла лажа.
  • Вопрос задан
  • 701 просмотр
Пригласить эксперта
Ответы на вопрос 1
@victor_stone Автор вопроса
Вот пример контента директивы
import {
  Directive,
  Input,
  OnInit,
  TemplateRef,
  ViewContainerRef
} from '@angular/core';

import { UserService } from './services/user.service';

@Directive({ selector: '[showAuthed]' })
export class ShowAuthedDirective implements OnInit {
  constructor(
    private templateRef: TemplateRef<any>,
    private userService: UserService,
    private viewContainer: ViewContainerRef
  ) {}

  condition: boolean;

  ngOnInit() {
    this.userService.isAuthenticated.subscribe(
      (isAuthenticated) => {
        if (isAuthenticated && this.condition || !isAuthenticated && !this.condition) {
          this.viewContainer.createEmbeddedView(this.templateRef);
        } else {
          this.viewContainer.clear();
        }
      }
    )
  }

  @Input() set showAuthed(condition: boolean) {
    this.condition = condition;
  }

}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы