不能在[(ngModel)]中使用三元if语句

时间:2017-09-03 17:32:28

标签: angular

尝试在ngModel中使用ternary if语句。

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

表达 (模式=='编辑')? 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

2 个答案:

答案 0 :(得分:2)

它应该如何工作?这个表达没有意义。当输入值得到更新时,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。我真的不喜欢我给你的解决方案,因为你的组件应该知道用户是否是新的这一事实告诉我设计是坏的。您最好从上面的组件中将它作为组件的输入参数,让更高的组件传递现有的用户对象或新的空对象。

答案 1 :(得分:1)

我刚刚使用'userToWrite'变量解决了这两种模式的问题。