Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

685
Vistas
ion-select no muestra la opción seleccionada con FormBuilder (Ionic 3)

Toma el siguiente html

 <form [formGroup]="detailsForm"> <ion-list> <ion-item> <ion-label>Gaming</ion-label> <ion-select formControlName="gaming"> <ion-option value="nes">NES</ion-option> <ion-option value="n64">Nintendo64</ion-option> <ion-option value="ps">PlayStation</ion-option> <ion-option value="genesis">Sega Genesis</ion-option> <ion-option value="saturn">Sega Saturn</ion-option> <ion-option value="snes">SNES</ion-option> </ion-select> </ion-item> </ion-list> </form>

Y en tu componente

 this.detailsForm = this.formBuilder.group({ gaming:['nes',Validators.required] });

Esperaría ver 'NES' como la opción seleccionada cuando se carga la vista. Sin embargo, no aparece. Si en su lugar usa [(ngModel)], funcionará.

¿Estoy haciendo algo mal o la actualización iónica más reciente ha causado este problema?

Cualquier ayuda sería genial.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Así es como resolví este problema (como todavía sucede en Ionic 3.5.0):

 <ion-select class="form-select" [selectOptions]="stateOptions" [(ngModel)]="state" [ngModelOptions]="{standalone: true}" (ionChange)="stateChanged(state)" (click)="onSelectClicked()"> <ion-option *ngFor="let state of states">{{state}}</ion-option> </ion-select>

Y el TypeScript correspondiente:

 public onSelectClicked (): void { const options: HTMLCollectionOf<Element> = document.getElementsByClassName('alert-tappable alert-radio') setTimeout(() => { let i: number = 0 const len: number = options.length for (i; i < len; i++) { if ((options[i] as HTMLElement).attributes[3].nodeValue === 'true') { // This is the selected option options[i].scrollIntoView({block: 'end', behavior: 'smooth'}) } } }, 500) // Leave enough time for the popup to render }
over 4 years ago · Santiago Trujillo Denunciar

0

No sé si hay una manera de hacerlo con formularios, pero he estado usando un ng-model y funciona muy bien.

Mira el código a continuación:

 <ion-list> <ion-item> <ion-label>Gaming</ion-label> <ion-select [(ngModel)]=gaming> <ion-option value="nes">NES</ion-option> <ion-option value="n64">Nintendo64</ion-option> <ion-option value="ps">PlayStation</ion-option> <ion-option value="genesis">Sega Genesis</ion-option> <ion-option value="saturn">Sega Saturn</ion-option> <ion-option value="snes">SNES</ion-option> </ion-select> </ion-item> </ion-list>

y en el archivo .ts declare que el juego es una variable global llamando a esto antes del constructor

 public gaming: any;

y luego inserte el valor

 $scope.gaming=['nes'];

esto debería funcionar bien.

over 4 years ago · Santiago Trujillo Denunciar

0

Es solo un problema con 3.1. Es un cambio importante al pasar todo el evento frente al valor como solía hacerlo, o tiene algo que ver con ionChange cuando el componente se carga antes de la interacción del usuario (o lo primero está causando lo segundo). Usa 3.0 por ahora.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda