angular - Multiseleção no PrimeNG multi select exibindo valores vazios
Eu tenho um componente de multiseleção:
<p-multiSelect class="multiple-select" display="chip" [options]="allTags" name="selectedTags" [(ngModel)]="selectedTags" optionLabel="tag" optionValue="tag"></p-multiSelect>
Uma única tag no array allTags:
{ tag: 'someTag' }
E o array selectedTags contém strings. Ao adicionar tags, funciona perfeitamente. O problema surge quando quero pré-selecionar algumas tags.
preselectTags(tags: string[]) {
tags.map(x => this.selectedTags.push(x));
}
Eu tentei forEach e simplesmente reatribuir em vez de usar array.map, mas toda vez que vejo algo assim:
Fazer console.log dos selectedTags depois de preenchê-lo retorna um array de strings corretas. O que estou fazendo de errado?
P.S. obrigado antecipadamente.
Resposta #1
Se eu não estiver enganado, suponho que o array selectedTags deve ter a mesma estrutura que allTags, então, quando você fizer um push, você precisa construir essa estrutura.
preselectTags(tags: string[]) {
tags.map(x => this.selectedTags.push({val:x}));
}
Espero que você ajude, se não, por favor, forneça os prints de cada estrutura de array. Atenciosamente
Resposta #2
Você precisaria fazer uma busca das opções para filtrar os itens indesejados/selecionar as tags..
Então, dependendo do que o array tags é, você poderia percorrê-lo, ou tentar:
preselectTags(tags: string[]) {
this.selectedTags = tags.map(x => this.allTags.find(y => y.val === x.val));
}
Seria mais fácil ajudar com a estrutura dessas matrizes...
