【问题标题】:Can't bind to 'authorize' since it isn't a known property of 'li'无法绑定到“授权”,因为它不是“li”的已知属性
【发布时间】:2019-12-19 21:55:48
【问题描述】:

HeaderComponent 上,我正在使用authorize 指令:

<li *authorize="'SignedIn'"><button (click)="signIn()">Sign In</button></li>

但我得到了错误:

Can't bind to 'authorize' since it isn't a known property of 'li'. 

HeaderComponent 被添加到 HeaderModule:

@NgModule({  
  declarations: [    
    HeaderComponent
  ],  
  imports: [
    CommonModule,
    PopupModule
  ],  
  exports: [
    HeaderComponent
  ]
})

HeaderModuleAuthorizeDirective 被添加到 SharedModule

@NgModule({
  declarations: [ 
    AuthorizeDirective
  ],    
  imports: [ 
    CommonModule
  ],
  exports: [ 
    HeaderModule,
    AuthorizeDirective
  ]
})

并且SharedModule 被添加到AppModule

我错过了什么?

授权指令是:

@Directive({
  selector: '[authorize]'
})

export class AuthorizeDirective implements OnInit {

  private notifier: Subscription;

  requirement: Requirement;
  id: number;

  @Input() set authorize(requirement: string) {
    this.requirement = Requirement[requirement];
  }

  @Input() set authorizeId(id: number) {
    this.id = id;
  }

  ngOnInit() { 

  }

}

【问题讨论】:

  • 您的模块定义出了点问题。该指令在 SharedModule 中声明,但您在不导入它的单独模块中使用它。
  • @Rich 是的,我正在使用它的模块 HeaderModule 正在添加到 SharedModule。这还不够吗?
  • 我在 SharedModule 中声明了我在其他模块中导入的指令,以便它们可以使用这些共享功能。但 HeaderModule 是 Shared 功能之一。如果我像在不属于 SharedModule 的其他模块中一样将 SharedModule 导入到 HeaderModule 中,那么我会得到一个循环引用。

标签: angular angular8


【解决方案1】:

由于HeaderModuleSharedModule 的子代,您需要重新考虑您的一些设计。您不能将指令从SharedModule(父)导入HeaderModule(子)。您可以将HeaderModule 设为独立于SharedModule 的模块,或者您可以创建其他一些包含AuthorizeDirective 的通用模块。

【讨论】:

    【解决方案2】:

    我认为授权是Input,所以你可以这样使用授权

    <li [authorize]="'SignedIn'"><button (click)="signIn()">Sign In</button></li>
    

    【讨论】:

    • 我在导入 SharedModule 的其他模块中将它用作 *authorize 并且它工作正常。问题是当我尝试在共享模块中导出的模块 HeaderModule 中使用它时
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    • 2017-08-05
    • 2022-01-09
    • 2018-06-09
    • 2017-06-21
    • 2017-02-03
    • 1970-01-01
    相关资源
    最近更新 更多