po-angular
po-angular copied to clipboard
<po-select>: <Componente não sendo limpo corretamente>
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
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:
- Abrir o link com a evidência de problema no PO UI
- Selecionar uma opção qualquer
- 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
Obrigado pelo contato, vamos analisar e dar um retorno o mais breve possível.
Fixes DTHFUI-8405