показать / скрыть div, используя пользовательскую директиву Angular 6 - PullRequest
0 голосов
/ 25 марта 2020

Я использую пользовательскую директиву, чтобы показать / скрыть div

import {
  Directive,
  TemplateRef,
  ViewContainerRef,
  Input,
  OnInit
} from '@angular/core';
import { LocalStorageConstants } from 'src/app/core/constants/local-storage.constants';

@Directive({
  selector: '[isAdminRole]'
})
export class AuthDirective implements OnInit {
  condition: boolean;

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

  constructor(
    private templateRef: TemplateRef<any>,
    private viewContainer: ViewContainerRef
  ) {}

  ngOnInit() {
    const privilegeRole = localStorage.getItem(
      LocalStorageConstants.PRIVILEGE_ROLE
    );

    setTimeout(() => {
      if (privilegeRole === 'ADMIN' && this.condition) {
        this.viewContainer.createEmbeddedView(this.templateRef);
      } else {
        this.viewContainer.clear();
      }
    })
  }
}


<div *isAdminRole="true">Hi</div>
<div *isAdminRole="true">Bye</div>

, но я передаю истину или ложь отсюда, что работает так, как я ожидаю, но я хочу передать строку как ADMIN так что я могу иметь одну проверку, а не многократную идею о том, как это сделать

1 Ответ

0 голосов
/ 25 марта 2020

Вы устанавливаете переменную условия в логическое значение .. установите ее в строку, и она должна работать. Затем вы можете использовать директиву с [adminRole] = "role"

//Directive definition
@Directive({
selector: '[adminRole]'
})

//The variable
@Input('adminRole') role:string;

. Затем использовать в шаблоне примерно так:

['adminRole'] = 'role'

Это поможет вам, я верю .

Ссылка angular на директивы .

...