2017-09-03 269 views
1

試圖在ngModel內使用用戶三元語句if語句。在[(ngModel)]內部不能使用三元if語句

<input [(ngModel)]="(mode == 'edit') ? userToUpdate.name_first : newUser.name_first" id="name_first" class="form-control" type="text"> 

表達式 (mode =='edit')? userToUpdate.name_first:newUser.name_first 只爲newUser.name_first綁定模型,但不會將模型綁定到userToUpdate.name_first。

這裏就是我試圖使用語句的地方: https://github.com/alex-chaliy/TeamManager/blob/master/client/src/app/home/home.component.html#L43

+0

在什麼樣的情況下,這個條件將被執行 – Aravind

+0

這似乎是更適合代碼而不是模板的東西。 –

+0

ngModel只接受組件字段名稱,所以你不能傳遞應該計算的表達式。 – slesh

回答

0

我剛剛解決了使用'userToWrite'變量爲這兩種模式的問題。

0

它是如何工作的?這個表達沒有意義。當輸入值被更新時,Angular如何理解它應該更新的模型的哪個值?你應該使用getter/setter來代替。

get firstName(): string { 
    return (mode == 'edit') ? this.userToUpdate.name_first : this.newUser.name_first; 
} 
set firstName(val: string) { 
    if(mode === 'edit') this.userToUpdate.name_first = val; 
    else this.newUser.name_first = val; 
} 

PS。我不太喜歡我給你的解決方案,因爲你的組件應該知道用戶是否是新的事實告訴我,設計是不好的。你最好從上面的組件中把它作爲你的組件的輸入參數,讓這個更高的組件通過現有的用戶對象或新的空對象。