结构指令,我可以获取属性值而不是计算布尔值

时间:2016-09-22 21:27:14

标签: angular

我知道有人可以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();
        }
    }

对于这种事情,结构性指令可能是错误的吗?它只是觉得我需要的所有地方的包装组件都是过度的。

2 个答案:

答案 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'">