Ваша проблема здесь:
(click)="fn"
должно быть
(click)="fn()"
Пример StackBlitz
Редактировать
Другая проблема, с которой вы столкнулись, заключается в том, что браузеры не генерируют события click
из элементов <option>
. Есть две альтернативы, о которых я могу подумать:
Опция 1 - <select>
change
событие:
<select #select (change)="onChange(select.value)">
...
<option value="a">A</option>
...
</select>
К сожалению, невозможно присвоить объекты элементам <option>
,поэтому этот подход вам не поможет, поскольку невозможно передать функцию в обработчик событий change
, уникальный для каждой опции.
Option 2 - ngModelChange
:
Thisподход должен делать то, что вы хотите:
<select ngModel (ngModelChange)="$event.fn(); onChange($event.value)">
<option *range="[1998, 2016]; let num; let fn = fn" [ngValue]e="{ fn: fn, value: num }">{{ num }}</option>
</select>
StackBlitz Пример