angular - Angular 6 - 通用输入(更改)方法,如何判断修改了哪个模型值?
问题描述
我正在寻找一种方法来修改将存储在模型中的输入值。
例如,当用户输入输入时,我想将字符串更改为大写。或者,也许,对某些字符进行某种替换。
我可以为每个输入分配一个唯一的(更改)方法,但我希望所有输入都有一个“dealWithInput($event)”方法。
所以输入将是这样的:
<input name="description" type="text" [(ngModel)]="myObject.description" (change)="dealWithInput($event)"/>
<input name="description" type="text" [(ngModel)]="myObject.name" (change)="dealWithInput($event)"/>
…
然后在component.ts中:
dealWithInput(event) {
//do some magic to alter the value of myObject.description
// or myObject.name
// or …
}
我怎么知道要更改哪个字段?我尝试修改输入(类似于 event.target.value = "whatever"),但这不会改变模型。
我想我也可以在模型类中实现一个设置器,但我很好奇如何仅使用输入事件来做到这一点(它可能有一天会派上用场)。
有任何想法吗?还是有更好的方法?
谢谢!
解决方案
我认为您可以为输入提供不同的名称属性,并且名称与 myObject 的键相同
<input name="description" type="text" [(ngModel)]="myObject.description" (change)="dealWithInput($event)"/>
<input name="name" type="text" [(ngModel)]="myObject.name" (change)="dealWithInput($event)"/>
然后在 dealWithInput() 中,您可以使用此名称来更改您更改的值
public dealWithInput(event) {
console.log(event.srcElement.name);
this.myObject[event.srcElement.name] = 'new event';
}
这是代码: https ://stackblitz.com/edit/angular-gg53hm
希望这有帮助。
推荐阅读
- python - 交叉验证的错误数据(不起作用)
- javascript - Javascript刽子手不循环
- javascript - 在 Chrome 中使用 React 添加新的 DOM 项目不会保持预期的滚动位置
- excel - 无法设置行属性值无效的属性值错误 - VBA
- terraform - 使用后端在 S3 中存储 Terraform 状态
- java - Maven插件无法解析
- java - 生成不在列表中的字母数字数字的有效方法
- c++ - 如何正确破坏包含指针类的结构的 QVector?
- java - 有没有办法在 LineGraph JavaFX 中以 0 而不是 X、Y 轴的下限开始刻度线?
- printf - 在 Octave 中打印不带换行符的未知类型变量的值