Вместо (click)
на option
, выберите (change)
на select
.Я бы порекомендовал, так как он более производительный и будет срабатывать только при изменении параметра.И это то, что мы ищем здесь в любом случае.
Здесь, попробуйте это:
<select (change)="findSso($event.target.value)">
<option value="null" disabled>Select a Vendor</option>
<option *ngFor="let vendor of vendors" [value]="vendor.name">{{ vendor.name }} </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 для вашей ссылки.
ОБНОВЛЕНИЕ
Если вы хотите, чтобы полный объект был передан, вы можетесделайте что-то вроде этого:
<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>
Здесь мы используем трубу json
для преобразования объекта в строку.
Теперьв своем шаблоне просто вызовите JSON.parse
для входящего аргумента:
findSso(selectedVendor) {
console.log('Got the selectedVendor as : ', JSON.parse(selectedVendor));
}
Код уже присутствует в примере StackBlitz.