La maggior parte delle soluzioni select/option per Angular 2 funziona in modo da restituire il contenuto effettivo, non l'attributo value
. Tuttavia, poiché sto ancora imparando Angular 2, voglio ottenere l'attuale attributo value
facendo clic su un pulsante. Sono riuscito a risolvere un po 'questo problema, ma non sono sicuro che questo sia l'approccio corretto. Di seguito è l'esempio di come mi piacerebbe farlo funzionare:Angolare 2 - come ottenere il valore da select/option
<select #selectedCategory>
<option *ngFor="#category of categories" [value]="category.id">{{category.name}}</option>
</select>
<button (click)="getValueFromSelect(selectedCategory.value)">
/* This returns the selected category.name, not the value attribute. */
La soluzione di cui sopra crea il seguente codice HTML (si noti la mancanza di attributi value
su option
):
<select _ngcontent-oom-3="">
<!--template bindings={}-->
<option _ngcontent-oom-3="">stuff 1</option>
<option _ngcontent-oom-3="">stuff 2</option>
<option _ngcontent-oom-3="">stuff 3</option>
</select>
La soluzione qui di seguito funziona davvero, tuttavia, ho bisogno di un ngModel
per farlo funzionare.
<select [(ngModel)]="selectedCategory">
<option *ngFor="#category of categories" [value]="category.id">{{category.name}}</option>
</select>
<button (click)="getValueFromSelect(selectedCategory.value)">
/* This returns the value attribute correctly; however, do I really need a ngModel for one value? */
Qual è il modo corretto di affrontare questa situazione?
Grazie per i vostri suggerimenti.
L'esempio di "come mi piacerebbe che funzioni" funziona: [plunker] (https://plnkr.co/edit/NZc3RWgERx2t2m1HWmCb?p=preview). Restituisce il 'category.id' che è assegnato alla proprietà' value' dell'opzione selezionata. Mi piace questo approccio, dal momento che non aggiunge una proprietà al componente. –
beh, questo è davvero strano, nel mio esempio quando controllo l'elemento select/option, non ho l'attributo 'value'. Fondamentalmente copio/incollato il tuo esempio - nel tuo plunker, se controlli l'elemento, ogni opzione ha un attributo 'value' mentre il mio no. Aggiornerò la mia domanda originale con l'HTML che viene generato. – uglycode
Quale versione di Angular beta stai usando? E hai caricato altre librerie? –