单击angular 4中不处理选项标记的事件 const供应商=[ {姓名:'测试',年龄:123}, {姓名:'tes34t',年龄:12233} ] {{l}

单击angular 4中不处理选项标记的事件 const供应商=[ {姓名:'测试',年龄:123}, {姓名:'tes34t',年龄:12233} ] {{l},angular,internet-explorer,select,Angular,Internet Explorer,Select,我的点击在IE中不起作用,它在chrome中起作用。如何使其在IE中工作?onclick不是选项的有效事件标记()。您应该使用select标记上的onchange事件来获取值更改时的事件。例如: {{l} 不要选择选项上的(单击),而是选择上的(更改)。我建议这样做,因为它的性能更高,只有在选项更改时才会触发。这就是我们在这里要找的 在这里,尝试一下: const vendors = [ {name: 'test', age: 123}, {name: 'tes34t', age:

我的点击在IE中不起作用,它在chrome中起作用。如何使其在IE中工作?

onclick
不是
选项的有效事件
标记()。您应该使用
select
标记上的
onchange
事件来获取值更改时的事件。例如:


{{l}
不要选择
选项上的
(单击)
,而是选择
上的
(更改)
。我建议这样做,因为它的性能更高,只有在选项更改时才会触发。这就是我们在这里要找的

在这里,尝试一下:

 const vendors = [
  {name: 'test', age: 123},
  {name: 'tes34t', age: 12233}
]


<select>
  <option *ngFor="let l of vendors" (click)="findSso(l)">{{ l }} </option>
</select>

这是给你的裁判的一封信


更新 如果希望传递完整对象,可以执行以下操作:

import { Component } from '@angular/core';

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  vendors = [
    { name: 'test', age: 123 },
    { name: 'tes34t', age: 12233 }
  ];

  findSso(selectedVendor) {
    console.log('Got the selectedVendor as : ', selectedVendor);
    // DO the needful here.
  }
}
代码已出现在示例StackBlitz中。

而不是
(单击)
请使用更改事件。和
[(ngModel)]
可用于通过
ngModelChange
事件检测更改

对于
tag
[ngValue]
指令可以采用
字符串
对象
,通过
ngModel
我们可以跟踪更改事件

findSso(selectedVendor) {
  console.log('Got the selectedVendor as : ', JSON.parse(selectedVendor));
}

选择供应商
{{vendor.name}

为便于参考,添加了代码。

为什么不使用?我只想打印单个对象,执行#myselect将给出包含所有选项值的完整select标记。如果您只需要值,我希望完整的objectit将值打印为undefined@Abhishek,它应该是
$event.target.value
。但即使这样,它也会打印[对象]。给我的解决方案试试看是否对你有效。实际上它不起作用,我无法阅读完整的对象。如果我执行{{vendor}}并尝试读取vendor的值,那么它给出的值是未定义的me@Abhishek,很高兴我能帮忙。请考虑将这些答案中的一个标记为关闭循环的解决方案。实际上它不工作,我无法阅读完整的对象。如果我做{{vendor}}并尝试读取vendor的值,它给出的值是未定义的。它不会出现。我在Teddy的回答中确实提到了一些东西。请确保您已将
[value]=“vendor.name”
添加到
选项
标记中,并且在
更改
上调用
findSso
时,您已传递了
$event.target.value
。如果您使用
[value]=“vendor”,我希望打印完整的对象而不仅仅是问题的名称,该怎么办
然后在
上更改
调用您的方法,它将收到一个字符串
[object object]
forms@Abhishek然后我们可以使用
[formControl]
,在ReaciveForm的情况下,我们可以订阅formControl的valueChanges事件。
<select #selectList (change)="findSso(selectList.value)">
  <option value="null" disabled>Select a Vendor</option>
  <option *ngFor="let vendor of vendors" value="{{ vendor | json }}">{{ vendor.name }} </option>
</select>
findSso(selectedVendor) {
  console.log('Got the selectedVendor as : ', JSON.parse(selectedVendor));
}
<select [ngModel]="selectedValue" (ngModelChange)="selectedValue=$event">
  <option value="null" disabled>Select a Vendor</option>
  <option *ngFor="let vendor of vendors" [ngValue]="vendor">{{ vendor.name }} </option>
</select>