我想创建自定义以同样的方式它是如何为内置指令一样使用本例中“ATTR”,“类”,“风格”属性来完成指令:如何使用动态名称创建Angular 2自定义属性指令?
<div [style.width.px]="mySize">
文档here只描述具有固定指令名称的情况。所以问题是:
我该如何指定这样的指令选择器?
如何检索指令名称的变量部分?
或者可能根本不可能,只用于内置指令?
我想创建自定义以同样的方式它是如何为内置指令一样使用本例中“ATTR”,“类”,“风格”属性来完成指令:如何使用动态名称创建Angular 2自定义属性指令?
<div [style.width.px]="mySize">
文档here只描述具有固定指令名称的情况。所以问题是:
我该如何指定这样的指令选择器?
如何检索指令名称的变量部分?
或者可能根本不可能,只用于内置指令?
虽然在@Günter检查下几乎不可能做到这一点。
但如果你只是想几乎同样适用于style
指令,这可能会帮助你。
用法:
<h2 [customStyle]="['width.px', mysize]" >Hello {{name}}</h2>
自定义指令:
@Directive({
selector: '[customStyle]',
inputs: ['style:customStyle']
})
export class CustomDir{
style;
constructor(private elRef: ElementRef){
}
ngAfterViewInit(){
if(this.style){
const prop = this.style[0].split('.')[0];
const unit = this.style[0].split('.')[1];
const val = this.style[1];
this.elRef.nativeElement.style[prop] = val + (unit || '');
}
}
}
据我所知,这不被支持,也没有计划。
或者可能根本不可能,只能用于内置指令?
此语法与指令无关,它是内置的绑定语法。
是否有可能有一个标签customStyle的多个属性,如风格*结合? – vagran
不幸的是没有。但你总是可以修改它以接受多于一种样式,就像'ngStyle' –
还有一个问题。为什么setTimeout()需要你的代码? – vagran