2016-11-18 82 views
11

我有下面的標記設置樣式動態地Angular2

<tr *ngFor='let activity of pagedWorkflowActivities' style="background-color:{{activity.status == 'Pending' ? 'red' : 'green'}}"> 
. 
. 
. 
. 
</tr> 

,因爲它說,如果activity.status場掛起然後進行背景色紅,否則綠色。但它不起作用。檢查後,我發現它呈現它像

<tr ng-reflect-style="unsafe"> 

回答

28
[style.background-color]="activity.status == 'Pending' ? 'red' : 'green'" 

[ngStyle]="{'backgroundColor': activity.status == 'Pending' ? 'red' : 'green' }" 

爲您呈現的結果也見In RC.1 some styles can't be added using binding syntax

+2

有不同的方法和替代品可能是在其他情況下更方便。 –

+0

這回答我的問題,我會在等待時間過去時接受它,只是獎金問題,如果我使用'[style.background-color] =「setBackgroundColor()」'並在組件中定義該函數,它會給出錯誤說'self .parent.context.setBackgroundColor不是一個函數。你能幫助我嗎?還是我應該提出另一個問題? – Imad

+0

我看過這個錯誤信息,但我不記得是什麼原因造成的。一條建議。不要在視圖綁定(僅限事件處理程序)中使用方法調用,因爲每次運行更改檢測時都會調用此方法。此外,如果該方法每次調用返回一個新的對象實例,如'return {a:b};',則會從Angulars更改檢測中獲得一個例外。而是將方法調用的結果分配給一個屬性並綁定到該屬性,或者如果您仍想使用方法,請緩存結果並在參數未更改的情況下返回緩存實例。 –