无法绑定到指令(' appHasAccess'),因为它不是“输入”

时间:2018-04-20 13:11:26

标签: angular angularjs-directive angular5 angular-library

我创建了一个自定义属性指令库包并安装到myProject中,当我尝试使用此自定义指令时抛出错误。

  

错误错误:未捕获(在承诺中):错误:模板解析错误:   无法绑定到appHasAccess'因为它不是一个已知的属性   '输入'

我使用的代码如下:

  

所有可能的尝试我已经完成了。任何人都知道如何解决这个问题。

1。指令:HasAccessDirective.ts

@Directive({
  selector: '[appHasAccess]',
})

export class HasAccessDirective {

accessDetail = { 'a': 1 }
 @Input('appHasAccess') set appHasAccess(accessDetail: any) {
    // Based on right control enable/disable
    this.eleRef.nativeElement.disabled = this.appRights.hasRights(accessDetail);
}
constructor(private eleRef: ElementRef,
    private appRights: MyService) { }
}

2。模块:DigiUserRightsModule.ts

   @NgModule({
        declarations: [
            HasAccessDirective
        ],
        imports: [
            CommonModule,
            HttpClientModule,
        ],
        exports: [
            HasAccessDirective
        ],
        providers: [UserRightsService]
    })

export class DigiUserRightsModule {
    static forRoot(): ModuleWithProviders {
        return {
            ngModule: DigiUserRightsModule,
            providers: [UserRightsService]
        };
    }
}

2 个答案:

答案 0 :(得分:2)

我做了以下更改以使其正常工作。我将我的指令模块注入我的用户模块而不是app-module。用户模块在加载的路由上延迟加载,并且工作正常。

  • 在用户模块中设置我的指令包模块:

    import { NgModule }      from '@angular/core';       
    
    @NgModule({
       declarations: [],
       imports: [
           DigiUserRightsModule.forRoot()
       ],
       providers: []
    })
    
    export class UserModule {}
    

答案 1 :(得分:1)

  1. 我认为您的@Input出了问题。输入应如下所示:
  2. @Input('appHasAccess'): any

    1. 您未在指令中声明accessDetail = { 'a': 1 }。这应该是你输入的html,如:

      // In HTML
      <div id="myElement" appHasAccess={{accessDetail}}
      
      // In TypeScript
      accessDetail = { 'a': 1 }