【问题标题】:Can't bind to Directive('appHasAccess') since it isn't a known property of 'input'无法绑定到 Directive('appHasAccess'),因为它不是“输入”的已知属性
【发布时间】:2018-10-01 05:15:08
【问题描述】:

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

ERROR 错误:未捕获(承诺中):错误:模板解析错误: 无法绑定到“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]
        };
    }
}

【问题讨论】:

    标签: angular angularjs-directive angular5 angular-library


    【解决方案1】:
    1. 我认为你的@Input 有问题。输入应如下所示:

    @Input('appHasAccess'): any

    1. 您没有在指令中声明accessDetail = { 'a': 1 }。这应该是您从 html 中输入的内容,如下所示:

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

    【讨论】:

    • 试试这个但不行。[ERROR ->] appHasAccess={{acess}}>,我的动作表单控件属性
    【解决方案2】:

    我进行了以下更改以使其正常工作。我将指令模块注入到我的用户模块而不是应用模块。用户模块在它加载的路由上被延迟加载并且工作正常。

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

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

    【讨论】:

      猜你喜欢
      • 2021-07-11
      • 2021-08-16
      • 2016-12-17
      • 2018-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-18
      相关资源
      最近更新 更多