po-angular icon indicating copy to clipboard operation
po-angular copied to clipboard

<po-select>: <Componente não sendo limpo corretamente>

Open yanric2000 opened this issue 1 year ago • 1 comments

Reprodução

Ao tentar limpar o componente, definindo o valor de seleção para nulo, o componente acaba não mantendo o valor que eu defini e sim modificando o valor do campo para "undefined". Esse comportamento não é o padrão encontrado no componente de seleção nativo do HTML, como pode ser validado através do segundo exemplo que vou deixar em anexo.

Evidência que o método "setValue" NÃO aceita o valor "undefined" como válido para preencher o campo:

  • Método setValue: https://github.com/angular/angular/blob/2.1.2/modules/%40angular/forms/src/model.ts#L922
  • Método que verifica se todos os campos possuem valor: https://github.com/angular/angular/blob/2.1.2/modules/%40angular/forms/src/model.ts#L1084

Evidência de inconsistência de valores com o componente : https://stackblitz.com/edit/po-ui-ckyfdx?file=src%2Fapp%2Fapp.component.html,src%2Fapp%2Fapp.component.ts,src%2Fapp%2Fapp.module.ts

Evidência do comportamento correto do componente de seleção nativo: https://stackblitz.com/edit/select-angular-3cv5tx?file=app%2Fapp.component.html,app%2Fapp.component.ts

Cenário real: Devido as regras do formulário as vezes preciso limpar certos campos, definir o valor do campo como "null" por exemplo, e permitir que o usuário termine de preencher os valores em outro momento. Para isso guardo os dados em cache e quando retorno para a tela tentando preencher os valores o Angular lança a exceção de que nem todos os campos do formulário receberam valores para serem preenchidos, já que "undefined" não é um valor aceitável.

Passos para reproduzir:

  1. Abrir o link com a evidência de problema no PO UI
  2. Selecionar uma opção qualquer
  3. Clicar no botão "Limpar"

Ao final do processo é possível verificar que o valor do campo é "undefined" invés de "null"

Qual o comportamento atual?

Valor do campo que foi definido programaticamente é sobrescrito com "undefined" .

Que comportamento você esperava ver?

Que o valor do campo fosse "null".

Ambiente

  • PO UI: ^15.0.0
  • Angular: 15
  • Browser(s):
    • [x] Chrome
    • [x] Firefox
    • [x] Edge
    • [x] Safari
    • [x] IE 11
    • [x] Outros
  • Operating System:
    • [x] Windows
    • [x] macOS
    • [x] Ubuntu
    • [x] Outros

yanric2000 avatar Jan 25 '24 16:01 yanric2000

Obrigado pelo contato, vamos analisar e dar um retorno o mais breve possível.

felipepetuco avatar Jan 26 '24 18:01 felipepetuco

Fixes DTHFUI-8405

anliben avatar Feb 23 '24 20:02 anliben