2016-07-20 61 views
1

我想创建自定义以同样的方式它是如何为内置指令一样使用本例中“ATTR”,“类”,“风格”属性来完成指令:如何使用动态名称创建Angular 2自定义属性指令?

<div [style.width.px]="mySize"> 

文档here只描述具有固定指令名称的情况。所以问题是:

  1. 我该如何指定这样的指令选择器?

  2. 如何检索指令名称的变量部分?

或者可能根本不可能,只用于内置指令?

回答

2

虽然在@Günter检查下几乎不可能做到这一点。


                                                                                                                                      PLUNKER ⇗

但如果你只是想几乎同样适用于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 || ''); 
    } 
    } 
} 
+0

是否有可能有一个标签customStyle的多个属性,如风格*结合? – vagran

+0

不幸的是没有。但你总是可以修改它以接受多于一种样式,就像'ngStyle' –

+0

还有一个问题。为什么setTimeout()需要你的代码? – vagran

0

据我所知,这不被支持,也没有计划。

或者可能根本不可能,只能用于内置指令?

此语法与指令无关,它是内置的绑定语法。

相关问题