2017-10-24 4 views
1

Markupselect2 Ereignis ausgelöst wird zweimal in angular4

<select2 
     [data]="data" 
     [width]="1024" 
     [options]="options" 
     [value]="selectedData" 
     (valueChanged)="onTagChanged($event)"> 
</select2> 

Angular 4 Komponente

onTagChanged(data: { value: string[] }): void { 
    console.log(data); 
    this.selectedData = data.value; 
} 

Ereignis valueChanged zweimal ausgelöst, wie kann es verhindern.

+0

in welchem ​​Kontext entfernen? –

+0

@RahulSingh: onTagChanged-Funktion wird zweimal aufgerufen, während ein Wert von select2 ausgewählt wird. Konsole druckt zweimal. –

+0

Versuchen Sie 'onSelect' statt 'valueChanged'. –

Antwort

2

In

onTagChanged(data: { value: string[] }): void { 
    console.log(data); 
    this.selectedData = data.value; 
} 

Sie ändern den Wert erneut d.h this.selectedData, so Wert wird zweimal geändert, einmal, wenn Sie einen Wert ausgewählt, und wenn Sie den Wert manuell geändert. Da der Wert an selectedData gebunden ist, müssen Sie ihn in der abvove-Methode nicht explizit ändern.

[value]="selectedData" 
2

Der Code sollte wie sein

<select2 
     [data]="data" 
     [width]="1024" 
     [options]="options" 
     (valueChanged)="onTagChanged($event)"> 
</select2> 

nur[value]="selectedData"

Verwandte Themen