You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Criar um dynamic form com diversos campos, sendo o último campo um textarea. Executar uma regra para ocultar alguns campos que na ordem estão antes do campo do tipo textarea. Alguns campos que não foram solicitados para serem ocultados, também são ocultados. Caso o campo do tipo textarea não exista, o problema não ocorre.
Esta ocultação ocorre apenas a nível de model do formulário. Na tela o campo permanece visível.
O problema ocorre quando há uma validação de formulário deteminando a habilitação de um botão quando o formulário está válido. Neste caso ocorre a validação do formulário mesmo havendo um campo na tela não preenchido. Isso ocorre porque internamente no formulário, este campo não preenchido não existe.
Utilizando o link do stackblitz acima, abra o console e clique no botão Opção para que sejam ocultados os campos de hora. Irá ficar os campos de data na tela junto do campo de opção e observação. No console será feito impresso o conteúdo dos controls do form. Observe que o data2 não irá fazer parte dos controls, porém somente os campos de hora foram tornados invisíveis. Quando o campo observação não está presente, isso não ocorre.
Adicionei também o status do formulário. Percebam que o data1 e data2 são obrigatórios e quando os campos de hora somem, preenchendo apenas o data1 o formulário já se torna válido, sendo que o campo obrigatório data2 ainda não foi preenchido.
Este bug já ocorre há várias versões do po-ui e angular.
PO UI: 17.4.0
Angular: 17.3.3
Browser(s):
Chrome
Firefox
Edge
Safari
IE 11
Outros
Operating System:
Windows
macOS
Ubuntu
Outros
The text was updated successfully, but these errors were encountered:
anliben
added
status: triage
Issue or pull request that need to be triaged and assigned to a reviewer
and removed
bug
Something isn't working
labels
Apr 24, 2024
@anliben hoje eu consegui de alguma forma contornar o problema. Eu fiz uma cópia dos componentes do dynamic form para utilizá-los como se fossem criados por mim e comecei a fazer diversos testes nele para tentar sanar o problema, o qual eu não sabia se era um problema do PO-UI ou do próprio Angular.
Ao alterar a função getVisibleFields() e permitir que todos os campos fossem incluídos e tratar a visibilidade do campo somente no template, adicionando a função isVisibleField(field) junto das funções compareTo() nos ngIf, permitiu que o campo fosse ocultado porém sem ser removido dos controls do form.
Acredito que alterando o array dos campos visíveis, causa algum problema no angular que remove dos controls todos os campos seguintes ao primeiro que ele encontra como não visível, principalmente quando o array muda de tamanho para menor.
Criar um dynamic form com diversos campos, sendo o último campo um textarea. Executar uma regra para ocultar alguns campos que na ordem estão antes do campo do tipo textarea. Alguns campos que não foram solicitados para serem ocultados, também são ocultados. Caso o campo do tipo textarea não exista, o problema não ocorre.
Esta ocultação ocorre apenas a nível de model do formulário. Na tela o campo permanece visível.
O problema ocorre quando há uma validação de formulário deteminando a habilitação de um botão quando o formulário está válido. Neste caso ocorre a validação do formulário mesmo havendo um campo na tela não preenchido. Isso ocorre porque internamente no formulário, este campo não preenchido não existe.
https://stackblitz.com/edit/po-ui-ju3rcq?file=src%2Fapp%2Fapp.component.ts
Utilizando o link do stackblitz acima, abra o console e clique no botão Opção para que sejam ocultados os campos de hora. Irá ficar os campos de data na tela junto do campo de opção e observação. No console será feito impresso o conteúdo dos controls do form. Observe que o data2 não irá fazer parte dos controls, porém somente os campos de hora foram tornados invisíveis. Quando o campo observação não está presente, isso não ocorre.
Adicionei também o status do formulário. Percebam que o data1 e data2 são obrigatórios e quando os campos de hora somem, preenchendo apenas o data1 o formulário já se torna válido, sendo que o campo obrigatório data2 ainda não foi preenchido.
Este bug já ocorre há várias versões do po-ui e angular.
The text was updated successfully, but these errors were encountered: