Pesquisa de site

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...