Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

po-dynamic-form: Campo ocultado incorretamente #2030

Open
2 of 10 tasks
likid opened this issue Apr 12, 2024 · 2 comments
Open
2 of 10 tasks

po-dynamic-form: Campo ocultado incorretamente #2030

likid opened this issue Apr 12, 2024 · 2 comments
Labels
status: triage Issue or pull request that need to be triaged and assigned to a reviewer

Comments

@likid
Copy link

likid commented Apr 12, 2024

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.

  • PO UI: 17.4.0
  • Angular: 17.3.3
  • Browser(s):
    • Chrome
    • Firefox
    • Edge
    • Safari
    • IE 11
    • Outros
  • Operating System:
    • Windows
    • macOS
    • Ubuntu
    • Outros
@likid likid added the bug Something isn't working label Apr 12, 2024
@anliben 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
Copy link
Contributor

anliben commented Apr 24, 2024

Bom Dia, tudo bem?

Analisarei e em breve darei uma resposta.

Attr.

@likid
Copy link
Author

likid commented May 6, 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status: triage Issue or pull request that need to be triaged and assigned to a reviewer
Projects
None yet
Development

No branches or pull requests

2 participants