Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

249
Visualizações
Angular: cómo seleccionar por defecto el primer elemento en una selección cuando se usa un objeto complejo

Estoy desarrollando una aplicación web usando Angular 11. Un componente recibe una matriz con un objeto a través de la entrada:

 [ {propery1: "a", property2:"b"}, {propery1: "c", property2:"d"}, {propery1: "e", property2:"f"}, ]

Entonces, en el archivo my_component.ts tengo:

 @Input() myArray: any[]; private selectedObject: any; // The current object selected with all its properties!

Me gustaría que selectedObject sea el objeto completo (de la matriz) seleccionado a través de un menú desplegable. Lo hice así:

 <select [(ngModel)]="selectedObject"> <option *ngFor="let object of myArray;" [ngValue]="object">{{object.property1}}</option> </select>

El objeto selectedObject está vinculado con el object de valor actual. Obtuve lo que quería, pero no puedo entender por qué aparece el menú desplegable en la pantalla sin opciones seleccionadas :

ingrese la descripción de la imagen aquí

Si abro el menú, los resultados aparecen, como se esperaba:

ingrese la descripción de la imagen aquí

Y si selecciono una propiedad, la "propiedad vacía" desaparece:

ingrese la descripción de la imagen aquí

Ojalá esto no sucediera. Me gustaría que el valor 'a' sea visible desde el principio. Esto se puede lograr fácilmente cambiando el valor de ngValue con object.property1 . Pero de esta manera, el enlace no funcionaría como yo quiero (el objeto selectedObject debe ser el objeto completo y ninguna propiedad). ¿Cómo hago que aparezca la primera propiedad sin que ocurra este problema?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

En su archivo .ts:

 myArray = [ {property1: "a", property2:"b"}, {property1: "c", property2:"d"}, {property1: "e", property2:"f"}, ] public selectedValue: string public selectedObject: any ngOnInit() { this.selectedValue = this.myArray[0].property1 this.onValueChange(); } onValueChange() { const found = this.myArray.filter( obj => obj.property1 === this.selectedValue) this.selectedObject = found? found[0] : {} }

En tu archivo .html

 <select [(ngModel)]="selectedValue" (ngModelChange)="onValueChange()"> <option *ngFor="let item of myArray" [value]="item.property1">{{item.property1}}</option> </select> <p>selectedvalue : {{selectedValue}}</p> <p *ngIf="selectedObject">selected object : {{selectedObject.property1}} ; {{selectedObject.property2}}</p>
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda