2016-11-07 67 views
0

我相信这个问题肯定已经得到解答或者在某个地方有详细的记录,但是我只是找不到它(搜索并没有找到......)。我正在构建一个简单的Angular2指令,它将基本属性添加到内联SVG中(有许多内联SVG是动态修改的,因此它实际上对重复声明中的标记进行清理是有意义的)。如何在Angular2 HostBinding属性中使用特殊字符(即冒号)?

我能够设置不包含特殊字符,像这样的任何属性:

@HostBinding('attr.something') something = something; 

但由于SVGs应包含的声明“的xmlns:XLink的”,我需要找到一种方法如何使用该字符串里面有冒号。有关如何规范化或转义特殊字符的想法?

继确实打破了代码,并呈现角死因为那冒号使得角度寻找“XLink的”内部“的xmlns”:

@HostBinding('attr.xmlns:xlink') something = something; 

值得注意注:我想使用打字稿,不是纯JS。

谢谢。任何建议在哪里看或尝试是非常感谢!

回答

1

实际上,伺机任何属性值时,当值没有约束力装饰直接分配,而是在后来OnInit的分配是这样

export class SomeClass implements OnInit { 
 
    //obtain required definitions 
 
    // i.e. namespace, viewbox ... 
 
    
 
    //bind attributes to host 
 
    @HostBinding('attr.version') version; 
 
    @HostBinding('attr.xmlns') xmlns; 
 
    @HostBinding('attr.x') x; 
 
    @HostBinding('attr.y') y; 
 
    @HostBinding('attr.viewBox') viewBox; 
 
    @HostBinding('attr.xmlns:xlink') xlink; 
 
    @HostBinding('attr.xmlns:space') space; 
 

 
    //assign values to specified attributes 
 
    ngOnInit() { 
 
    this.viewBox = viewboxValue; 
 
    this.xlink = xlinkValue; 
 
    this.space = spaceValue; 
 
    this.x = xValue; 
 
    this.y = yValue; 
 
    this.xmlns = xmlnsValue; 
 
    this.version = versionValue; 
 
    } 
 
}

没有问题