我知道有人可以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();
}
}
对于这种事情,结构性指令可能是错误的吗?它只是觉得我需要的所有地方的包装组件都是过度的。
答案 0 :(得分:1)
怎么样
<p *my-unless="'some space delimted values'">
答案 1 :(得分:1)
使用绑定属性时,Angular需要一个变量。
没有绑定属性的第一个示例,您可以直接使用字符串
<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'">