Je souhaite implémenter un menu de sélection qui utilise les données d'énumération pour afficher les données et enregistre le nombre en fonction de la chaîne sélectionnée:
J'ai essayé ceci:
ENUM:
<select class="custom-select" name="state_raw" [(ngModel)]="merchant.state_raw" id="state_raw" required> <!--<option selected></option>--> <option [value]="stateType" *ngFor="let stateType of stateTypes">{{ MerchantStateType2LabelMapping[stateType] }}</option>
3 Réponses :
Soit vous pouvez ajouter ce qui suit dans ngOnInit ()
<select class="custom-select" name="state_raw" [(ngModel)]="merchant.state_raw" id="state_raw" required> <!--<option selected></option>--> <option [value]="stateType" *ngFor="let stateType of stateTypes; first as isFirst" [selected]="isFirst">{{ MerchantStateType2LabelMapping[stateType] }}</option> </select>
(ou) Vous pouvez utiliser la variable locale «first» de * ngFor
this.merchant.state_raw = this.stateTypes[0]
Définissez la valeur initiale où vous voulez ngOnInit (), Constructor ():
public stateTypes = Object.values(MerchantStateType).filter(type => isNumber(<any>type) );
le state_raw contient l'index de l'énumération. Votre sélection ressemble à ceci:
public stateTypes = Object.values(MerchantStateType);
Modifiez votre composant de:
<select class="custom-select" name="state_raw" [(ngModel)]="marchant.state_raw" id="state_raw" required> <option [value]="stateType" *ngFor="let stateType of stateTypes">{{ MerchantStateType2LabelMapping[stateType] }} </option> </select>
À:
this.merchant.state_raw = 1;
Cela supprimera vos identifiants de vos valeurs et n'obtiendra que la chaîne
Votre HTML
public current = 1;
Ts:
<select class="custom-select" name="state_raw" [(ngModel)]="current" id="state_raw" required> <!--<option selected></option>--> <option [value]="stateType" *ngFor="let stateType of stateTypes">{{ MerchantStateType2LabelMapping[stateType] }}</option>
Maintenant la valeur du champ de sélection, vous l'obtiendrez avec la variable this.current
.