Мне нужно создать Directive
для подтверждения кнопки показа для пользователя или нет.
я создаю директиву в SahreMudole
:
@Directive({
selector: '[appValidatePermission]'
})
export class ValidatePermissionDirective implements OnInit {
constructor(private templateRef: TemplateRef<any>,
private viewContainerRef: ViewContainerRef
, private dynamic: DynamicPermissionService) { }
// tslint:disable-next-line:no-input-rename
@Input('AccessName') AccessName: string;
ngOnInit() {
this.ValidateAccessPemission(this.AccessName);
}
ValidateAccessPemission(item: string) {
if (this.FindAceess(item)) {
console.log('in d true');
this.viewContainerRef.createEmbeddedView(this.templateRef);
} else {
console.log(' in dfalse');
this.viewContainerRef.clear();
}
}
FindAceess(acess: string): boolean {
const find = this.dynamic.dynamicModel.filter(x =>
x.actionsVM.filter(z => z.actionEnglishName === acess));
if (find == null) {
return false;
} else {
return true;
}
}
}
и в shareMudole:
@NgModule({
declarations: [ValidatePermissionDirective],
imports: [
CommonModule
],
exports: [ValidatePermissionDirective]
})
export class SharedModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: SharedModule,
providers: [ValidatePermissionDirective]
};
}
}
, и я использую shareModule в AdminPanme.Module:
imports: [
SharedModule,
]
, и я называю это в html-коде:
<span appValidatePermission [AccessName]='GetRoleList'>
<router-outlet></router-outlet>
</span>
, но это показывает мне эту ошибку:
Ошибка: StaticInjectorError (AppModule) [NgForOf -> TemplateRef]
в чем проблема?как я могу решить эту проблему ???