我创建了一个自定义属性指令库包并安装到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]
};
}
}
答案 0 :(得分:2)
我做了以下更改以使其正常工作。我将我的指令模块注入我的用户模块而不是app-module。用户模块在加载的路由上延迟加载,并且工作正常。
在用户模块中设置我的指令包模块:
import { NgModule } from '@angular/core';
@NgModule({
declarations: [],
imports: [
DigiUserRightsModule.forRoot()
],
providers: []
})
export class UserModule {}
答案 1 :(得分:1)
@Input
出了问题。输入应如下所示: @Input('appHasAccess'): any
您未在指令中声明accessDetail = { 'a': 1 }
。这应该是你输入的html,如:
// In HTML
<div id="myElement" appHasAccess={{accessDetail}}
// In TypeScript
accessDetail = { 'a': 1 }