【发布时间】:2017-05-16 17:06:31
【问题描述】:
我在 Angular 中有这样的结构指令
@Directive({ selector: "[access]" })
export class AuthorizationAccessDirective implements OnInit, AfterViewChecked {
constructor(private templateRef: TemplateRef<any>, private eleRef: ElementRef, private viewContainer: ViewContainerRef) {
}
hasView: boolean = false;
@Input("access")
_accessInput: string[];
@Input()
accessFeatures: any;
ngAfterViewChecked() {
this.processAuthorization();
}
ngOnInit() {
this.processAuthorization();
}
}
使用该指令的 HTML 如下所示
<li routerLinkActive="active" *access="['CAD']" accessFeatures="{'Settings':31}">
...
</li>
我可以得到_accessInput 的值,但是在ngOnInit 和ngAfterViewChecked 两种方法中,额外的参数accessFeatures 始终是undefined。
我将值更改为字符串以简化,但也没有成功:
<li routerLinkActive="active" *access="['CAD']" accessFeatures="31">
我将@Input 定义更改为@Input("features") 和@Input("accessFeatures")。
我做错了什么?
【问题讨论】:
-
我对它现在的工作方式感到惊讶,
*access="['CAD']"是我认为的错误语法,它应该是[access]="['CAD']"。this.processAuthorization();是什么? -
[access]="['CAD']" [accessFeatures]="'any'"和[access]="['CAD']" accessFeatures="any"在 minimal reproducible example 中对我来说很好。
标签: angular angular2-directives