2017-02-06 31 views

回答

1

指令使用不帶括號的,但如果有相同名稱作爲指令綁定內部指令類,它應該被包裹在括號中。這發生在ngClass指令。下面是從here相關的源代碼:

@Directive({selector: '[ngClass]'}) 
export class NgClass implements DoCheck { 
    ... 

    @Input('class') 
    set klass(v: string) { 
     ... 
    } 

    @Input() 
    set ngClass(v: string|string[]|Set<string>|{[klass: string]: any}) { 

所以我們可以看到,有定義ngClass輸入。基本上,原代碼可以改寫這樣講清楚:

<some-element ngClass [ngClass]="'first second'">...</some-element> 

或者這樣使用class輸入綁定:

<some-element ngClass [class]="'first second'">...</some-element> 
2

檢查Property binding

<some-element [ngClass]="expression">...</some-element> 

告訴角到評估表達和綁定到它。

<some-element ngClass="'first second'">...</some-element> 

在這裏,你只是設置一個字符串文字。使用直接字符串文字既可以正常工作,也可以不使用變量或表達式。

情況下,這將關係:

如果你有分量

this.class = {this.class1: this.isClass1,this.class2:isCass2} 

定義一個類的對象,並將其設置在你的HTML。

[ngClass]="class" 

或者你可以有一個像三元操作一樣的表達式來驗證你是否需要有一個類。

[ngClass]="isClass1?Class1:Class2" 
+0

是啊,謝謝,但'ngClass'不是屬性,它是一個指令 –

+0

檢查鏈接..屬性綁定適用於指令以及 –

+0

耶,謝謝,我已經想通了[答案](http://stackoverflow.com/a/42067703/2545680)我自己,但我會upvote,因爲你給了我一個洞見,我想念:) –

相關問題