2017-02-15 10 views
2

Das ist mein html ist, Wenn ich Option "new-item" klicken wird input type Feld öffnen, und geben Sie dann i Wert wollen es OptionAngular 2 Wie kann ich Click Event innerhalb Option hinzufügen?

<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> 

und mein Typ Skript ist, zu wählen hinzuzufügen

addSelect() { 
     this.edited = true; 
} 
constructor() { 
    this.edited = false; 
} 
+1

Warum Sie eine solche Veranstaltung brauchen? click wird es trotzdem auswählen lassen warum nf-change dann nicht verwenden. –

+0

Ich möchte die Option manuell aus der Ausgabe hinzufügen. Wie kann ich Details bekommen – niranchan

+0

Aber ich kann diesen nicht brauchen. Ich brauche, während ich auf Add-Item-Option neue Eingabefeld öffnen möchte. In diesem Eingabefeld gebe ich den Wert ein, dieser Wert kann gespeichert werden, um die Option – niranchan

Antwort

2

Sie können ein solches Ereignis nicht zu einem <option> hinzufügen.

Sie können sehen, dass das Ereignis Feuer in nicht alle Browser (der einzige Browser es in funktioniert, ist < IE11 und 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>

Der Tag propagiert nicht nach unten alle Klickereignisse. Click-Ereignisse, die Sie versuchen und in einer Option zuweisen, funktionieren nicht. Am besten schauen Sie sich den Wert an, den Sie im Rückruf onChange() erhalten, und schalten dann eine andere Komponente ein, die es dem Benutzer ermöglicht, Daten einzugeben. Sie könnten sogar eine window.prompt() verwenden, um solche Daten zu erhalten.

Sie können dies stattdessen tun:

<select (change)="onChange($event.target.value)"> 

onChange(val) { 
    console.log(val); 
    this.edited = false; 
} 

Für weitere Informationen über diesen Ansatz Umsetzung finden Sie unter: How can I get new selection in "select" in Angular 2?

+0

auszuwählen. Aber ich kann diese nicht brauchen. Ich brauche, während ich auf Add-Item-Option neue Eingabefeld öffnen möchte. In diesem Eingabefeld gebe ich einen Wert ein, dieser Wert kann gespeichert werden, um die Option – niranchan

+1

zu wählen. Das '

+0

@chan Ich weiß, dass dies eine enttäuschende Schlussfolgerung ist, aber am Ende des letzten Jahres verbrachte ich eine Woche bei der Arbeit, um genau die gleiche Funktionalität in einem Projekt zu bekommen. Ich endete mit der oben genannten Methode. Freut mich, dass es dein Problem gelöst hat. – Zze

Verwandte Themen