po-ui / po-angular

Biblioteca de componentes Angular.
https://po-ui.io
MIT License
916 stars 212 forks source link

po-combo: p-change dispara ao reexibir o componente #1705

Open likid opened 1 year ago

likid commented 1 year ago

Ao esconder o componente e exibi-lo novamente, o evento p-change é disparado novamente, mesmo não havendo alteração do valor.

https://stackblitz.com/edit/po-ui-pryfxn?file=src/app/app.component.html

Utilizando o exemplo do stackblitz, clicar no botão para esconder ou mostrar após selecionar qualquer valor no combo e ficar clicando neste botão. Há uma variável contando quantos disparos ocorrem o p-change e o valor é exibido no console também.

Qual o comportamento atual?

Dispara o p-change quando o componente é exibido novamente sem alteração de valor

Que comportamento você esperava ver?

Disparar o p-change somente quando houver alteração do valor.

Ambiente

rafaellmarques commented 1 year ago

Boa tarde @likid , tudo bem?

Obrigado por reportar, vamos analisar e assim que possível entraremos em contato.

Att.

CSimoesJr commented 1 year ago

Boa tarde @likid, tudo bem?

De fato, ao utilizar ngIf para exibir/esconder, esse comportamento está sendo realizado. Enquanto investigamos uma possível resolução, encontrei uma solução que pode funcionar bem. Ao invés de ngIf, utilizei [ngClass]="hidden ? 'hide-combo' : ' ' " e no css: hide-combo: { display: none } e dessa forma funcionou corretamente. Consegue verificar se funcionaria da forma esperada, por favor? Atualizei o stackblitz com essa solução: https://stackblitz.com/edit/po-ui-chwtyk?file=src%2Fapp%2Fapp.component.html,src%2Fapp%2Fapp.component.css,src%2Fapp%2Fapp.component.ts

Att.

likid commented 1 year ago

Fiz o teste com a classe ao invés do ngIf e deu certo. Além do po-combo, percebi que o po-switch também estava se comportando da mesma forma, reatribuindo o valor a ele. Com o uso da classe ele volta no mesmo status que estava antes de desaparecer. Não sei se isso é um comportamento natural do angular ou algo da biblioteca po-ui que deve ser alterado.