2017-06-16 30 views
0

我有一個函數根據值返回類名。檢查函數調用計數添加了計數器和控制檯日誌。angular2 attr.class中意外的函數觸發

TS

count: number = 0; 
    myColDiv(month) { 
     this.count++; 
     console.log('Start',this.count); 
     return "col-"+month; 
    } 

HTML

<div [attr.class]="myColDiv(month)"></div> 

調用次數太多 計數器值達到100餘還對頁面點擊觸發該功能,並增加計數器,不知道這個函數是如何觸發的。

<div (click)="myColDiv(month)"></div> 

檢查只點擊觸發器,而只點擊div。 在我的應用程序中也使用了primeng組件。

+0

綁定到方法氣餒,因爲該方法將被調用每次變化檢測運行。如果該方法爲後續調用返回新的對象實例,則甚至會得到類似「上次檢查後表達式已更改」的錯誤。相反,將值分配給屬性並綁定到此屬性。 –

+0

是的,我打算將這個函數用於多個placel,如果我綁定到屬性,那麼每個地方的值都會改變,不是嗎? –

+0

對不起,我不明白這個問題。 –

回答

0

這不是你如何給一個元素分配一個類。

更改您的myColDiv方法的邏輯以將結果保存在控制器中的this.myColDivClass上。之後,改變你的div要類適用於以下:

<div [ngClass]="[myColDivClass]"></div> 
+0

「myColDivClass」周圍不需要'[]'' –

+0

是真的。我習慣總是包括括號,以防萬一我需要在後面添加另一個括號,並且之後我很容易忘記括號。 –

+0

[ngClass] =「countVal()」雖然嘗試多次調用。 –