我想創建自定義以同樣的方式它是如何爲內置指令一樣使用本例中「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