结构指令,我可以得到属性值,而不是计算布尔值
问题描述:
我知道可以使custom structural directives。结构指令,我可以得到属性值,而不是计算布尔值
<p *my-unless="someExpression">
然而,引号之间的表达与得到的布尔值计算
@Input() set myUnless(condition: boolean) {
console.log(condition);//either true, false, or undefined
}
我怎样才能使它所以我只是得到一个原始字符串值传递,这样,如果我做了
<p *my-unless="some space delimted values">
我能做
@Input() set myUnless(theString: string) {
console.log(theString);//=> theString == 'some space delimted values'
}
最后,我想提出一个角色的限制指令中所允许的角色的属性值中说,我不喜欢
@Input()
set forRoles(allowedRoles: string) {
let userTypes = allowedRoles.split(' ');
if(~userTypes.indexOf(this.authenticatorService.getUserType())){
this.viewContainer.createEmbeddedView(this.templateRef);
} else {
this.viewContainer.clear();
}
}
也许结构性指令的指令组件代码中的检查是错误的,这种事情?它只是觉得,我需要的地方包装组件都是矫枉过正的。
答
当使用绑定属性,角预计的变量。
不绑定属性第一个例子,你可以使用一个字符串直接
<my-component someInput="some space delimted values"></my-component>
但是如果你使用绑定,您必须使用单引号。
<my-component [someInput]="'some space delimted values'"></my-component>
结构指令的行为是一样的绑定属性,所以必须添加单引号:
<p *my-unless="'some space delimted values'">
谢谢。那么我会首先与你的第一个建议一起去。非绑定属性。但是,如果我这样做了,因为它正在寻找一个绑定属性,所以我得到'没有TemplateRef!的提供者?我想,换个方式,我可以制定一个不受限制的自定义指令吗? – AmmarCSE
我不这么认为。结构指令被处理为绑定属性。 –