Javascript 如何通过angular 2中的事件对象获取输入字段名

Javascript 如何通过angular 2中的事件对象获取输入字段名,javascript,angularjs,events,angular,Javascript,Angularjs,Events,Angular,我不确定这是否合乎逻辑。 这是我的输入框的html代码 <input type="text" id="name" #name="ngForm" [ngFormControl]="userProfileForm.controls['name']" [(ngModel)]="loggedUserInfo.name" (change)="firechange($event,'name')" /> 我只想在firechange函数中传

我不确定这是否合乎逻辑。 这是我的输入框的html代码

<input type="text" id="name" #name="ngForm" [ngFormControl]="userProfileForm.controls['name']"  
             [(ngModel)]="loggedUserInfo.name" (change)="firechange($event,'name')"
             />
我只想在firechange函数中传递事件,在firechange函数中,我想从事件中获取输入字段名,这样我就可以理解表单中哪个输入字段触发了事件。预期的代码是这样的


我的理想要求是,表单中有许多表单字段,我甚至不想在每个表单字段中编写firechange函数。是否有任何通用方法可以在特定表单的每个输入字段值更改时调用事件,而无需将其写入每个输入字段?

如果您想从fire change函数中获取元素,您可能需要尝试以下操作:

firechange(event){
          let theElement = event.target;
          // now theElement holds the html element which you can query for name, value and so on
 }
此外,如果您希望指示组件在所有输入字段上应用firechange()逻辑,只需在组件中使用一条指令(而不必在每个输入字段上指定),那么我建议您查看


我希望这会有所帮助

如果
id
与您传递的名称相同,您可以获得如下名称

firechange(event){
  if(this.userProfileForm.controls[$event.target.id].valid){
}

要获取元素的实际名称,可以执行以下操作:

firechange(event){
     var name = event.target.attributes.getNamedItem('ng-reflect-name').value;
     console.log('name')
}
如果
id
不相同或者可以更改,这里有更多的杠杆作用。。。 您可能希望反映元素属性的
[name]
属性:

那么

试试这个:

<input type="text" (change)="firechange($event.target.value)">

这对我来说在10年内很有效

$event.source.name

我试过用这个,但它打印了这个``这不是我的目的,我想要输入字段的id或ngControl名称。你能为我的最后一段提供一个方便的解决方案吗?我不确定你实际上想要实现什么。也许
这个.userProfileForm.valueChanges.subscribe(…
)就是您要找的。另请参见,这很方便--专有,但很方便。谢谢我不得不使用
event.source.ngControl.name
... #input [name]="item.name" [attr.name]="item.name" (change)="fn(input)" ...
...
fn(input) {
    log(input.name);  // now it returns the name
}
...
<input type="text" (change)="firechange($event.target.value)">
$event.source.name