我不知道这是否合乎逻辑。这是我输入框的html代码。
<input type="text" id="name" #name="ngForm" [ngFormControl]="userProfileForm.controls['name']"
[(ngModel)]="loggedUserInfo.name" (change)="firechange($event,'name')"
/>这是我的火换功能
firechange($event, field){
if(this.userProfileForm.controls[field].valid){
this._userService.updateUserProfile(this.loggedUserInfo);
this._userService.loadUserData();
}
}我只想传递火变函数中的事件,而在火变化函数中,我想从事件中获得输入字段名,这样我就可以理解我表单中的输入字段触发了事件。预期的代码将会是这样的。
[ngFormControl]="userProfileForm.controls['name']"
[(ngModel)]="loggedUserInfo.name" (change)="firechange($event)"
/>
firechange($event){
if(this.userProfileForm.controls[$event.fieldname].valid){
this._userService.updateUserProfile(this.loggedUserInfo);
this._userService.loadUserData();
}
}我的理想要求是,在表单中有很多表单字段,我甚至不想在每个单独的表单字段中编写火变函数。是否有任何通用方法来调用每个输入字段的值更改特定表单的事件,而不将其写入每个输入字段?
发布于 2016-05-05 09:46:20
如果id与要传递的名称相同,则可以获得如下所示的名称
firechange(event){
if(this.userProfileForm.controls[$event.target.id].valid){
}发布于 2017-06-12 09:11:50
要获取元素的实际名称,可以执行以下操作:
firechange(event){
var name = event.target.attributes.getNamedItem('ng-reflect-name').value;
console.log('name')
}发布于 2016-05-05 06:23:36
如果您希望从火更改函数中获取元素,您可能希望尝试如下所示:
firechange(event){
let theElement = event.target;
// now theElement holds the html element which you can query for name, value and so on
}此外,如果您希望指示您的组件在您的所有输入字段中使用一个指令(并且不必在每个输入字段上指定这一点),那么我建议您查看in Angular2 how to know when ANY form input field lost focus。
我希望这能帮到你
https://stackoverflow.com/questions/37040700
复制相似问题