Попробуйте это:
Вам необходимо создать пользовательскую структурную директиву roleType
, которая будет отображать и скрывать данные на основе roleType пользователя.
Демонстрация Stackblitz
roletype.directive.ts
import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';
import { DataService } from './data.service';
@Directive({
selector: '[roleType]'
})
export class RoleTypeDirective {
constructor(private templateRef: TemplateRef<any>, private vcRef: ViewContainerRef, private dataService: DataService) {
}
currentRoleType: string = this.dataService.currentRoleType;
@Input() set roleType(roleType: string) {
if (roleType.includes(this.currentRoleType)) {
this.vcRef.createEmbeddedView(this.templateRef);
}
else {
this.vcRef.clear();
}
}
}
HTML
<button *roleType="'AMU'">View</button>
<button *roleType="'AM'">Edit</button>
<button *roleType="'A'">Delete</button>
Где A-Admin, M-Модератор и U-обозначает пользователя.