这是我的HTML,当我点击选项"new-item"
时,它会打开输入类型框,然后我输入要添加的值以选择选项
<form (submit)="addItem()">
<input type="text" [(ngModel)]="add.name" name="name">
<input type="text" [(ngModel)]="add.price" name="price">
<input type="text" [(ngModel)]="add.description" name="description">
<select [(ngModel)]="add.type" name="room-type">
<option [value]="c">Select</option>
<option>BreakFast</option>
<option>Lunch</option>
<option>Dinner</option>
<option><button (click)="addSelect()">Add-item</button></option>
<input *ngIf='edited' type="text" >
</select>
,我的类型脚本是,
addSelect() {
this.edited = true;
}
constructor() {
this.edited = false;
}
答案 0 :(得分:6)
您无法将此类事件添加到<option>
。
您可以看到事件不会在所有浏览器中触发(它使用的唯一浏览器是&lt; ie11和Firefox):
$("#trig").click((event) => console.log(event));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
<option>default</option>
<option id="trig">trigger</option>
</select>
标记不会向下传播任何点击事件。因此,您尝试在选项中分配的任何点击事件都不起作用。您最好的选择是查看onChange()
回调中收到的值,然后打开另一个允许用户输入数据的组件。您甚至可以使用window.prompt()
来获取此类数据。
你可以这样做:
<select (change)="onChange($event.target.value)">
onChange(val) {
console.log(val);
this.edited = false;
}
有关实施此方法的详细信息,请参阅:How can I get new selection in "select" in Angular 2?