尝试在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
答案 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'变量解决了这两种模式的问题。