Ошибка: StaticInjectorError (AppModule) [NgForOf -> TemplateRef] - PullRequest
1 голос
/ 09 июня 2019

Мне нужно создать 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]

в чем проблема?как я могу решить эту проблему ???

...