Componente estável e recomendada para novos projetos.
Anatomia, uso, comportamento visual e recomendações conceituais são mantidos pelo Padrão Digital de Governo. Esta página documenta a implementação Web Components e sua API executável.
Regra síncrona ou assíncrona executada no change ou por validate(). Pode consultar um serviço remoto; o componente controla apenas loading, validade e a precedência do resultado mais recente.
Para o contrato geral e a matriz de componentes, consulte o guia de formulários. Esta seção documenta o contrato específico do br-textarea.
br-textarea usa required, readonly, minlength e maxlength como constraints nativas. O valor é enviado por name e pode ser consultado com getValidationState().
Para regras de domínio, passe validator como propriedade JavaScript. Ele recebe o valor textual e pode retornar uma mensagem, null para sucesso ou uma Promise:
Em React, Angular e Vue, use property binding (validator={fn}, [validator]="fn" ou :validator="fn"). Não use validator="..." para passar uma função nesses frameworks. A validação automática ocorre no change, nunca a cada tecla.
Durante uma validação assíncrona, o campo expõe aria-busy="true" e aceita o slot validation-loading. O resultado pode ser acompanhado por brTextareaValidationChange; mensagens podem ser fornecidas pelo slot feedback ou pelo br-message padrão.
Para uma regra adicional, chame setCustomValidity() com a mensagem em erro e uma string vazia ao corrigir. reportValidity() apresenta o erro sem emitir eventos de edição; reset e restauração retornam ao valor inicial silenciosamente.
Acessibilidade
Use um label visível e associe a mensagem de erro por aria-describedby ou aria-errormessage. O host mantém aria-invalid coerente com a validade mostrada e delega foco para o <textarea> interno.
O texto de ajuda deve explicar como corrigir o campo. Não dependa somente de cor ou placeholder para transmitir obrigatoriedade ou erro.
Eventos não suportados ou ainda não caracterizados
Composição, clipboard e seleção têm propagação caracterizada com eventos construídos em Chromium; gatilhos reais e os outros engines permanecem pendentes. Escrita externa e reset são silenciosos.
Leia event.target.value; validade e FormData pertencem ao host. HTML, React, Angular e Vue recebem os eventos padrão. O foco delegado e a edição multilinha preservam a semântica do <textarea>.