Categorias do Site

Guia Completo do Angular FormArray

Aprenda a usar o FormArray do Angular para criar formulários dinâmicos e manipular dados em aplicativos web.

Ilustração mostrando um layout estilizado de interface de usuário com barras de progresso, botões e caixas de diálogo em tons de azul e roxo sobre um fundo escuro com pontos luminosos.

Gerenciar dados estruturados e dinâmicos é um desafio comum em aplicativos web modernos. O FormArray do Angular é uma ferramenta poderosa para essa finalidade.

A Deep Dive Into Angular’s FormArray Container

O FormArray facilita a criação e gestão de linhas e colunas dinâmicas de campos de entrada, permitindo interfaces semelhantes a planilhas.

Neste guia, você aprenderá a:

  • Carregar e analisar dados CSV em um formato estruturado
  • Gerar controles de formulário dinamicamente usando o FormArray do Angular
  • Adicionar regras de validação para garantir a precisão dos dados
  • Permitir que os usuários baixem dados modificados como um arquivo CSV

Ao final deste guia, você terá um aplicativo pseudo-planilha funcional e uma forte compreensão de como os formulários reativos do Angular simplificam o manuseio de dados complexos e dinâmicos.

Configurando o projeto Angular

Para começar, certifique-se de ter o Node.js e o Angular CLI instalados. Para criar um novo projeto Angular, execute o seguinte comando:

ng new dynamic-formarray-app

Durante a configuração, habilite o roteamento e escolha seu pré-processador CSS preferido. Após a criação do projeto, navegue até a pasta do projeto e instale as dependências necessárias, incluindo o Bootstrap para estilização:

npm install bootstrap

Adicione o Bootstrap em angular.json no array styles:

 "styles": ["node_modules/bootstrap/dist/css/bootstrap.min.css","src/styles.css"]

Adicione o PapaParse para uma análise robusta de CSV:

 npm install papaparse

Finalmente, gere um novo componente para a interface da planilha:

ng generate component components/spreadsheet

Carregando e analisando dados CSV

Para gerar controles de formulário dinamicamente, precisamos primeiro carregar e analisar um arquivo CSV. Adicione um elemento de entrada de arquivo ao seu template:




No arquivo de componente (spreadsheet.component.ts), use o FormBuilder do Angular e o PapaParse para processar o arquivo enviado:

import { Component, OnInit } from '@angular/core';
import { FormArray, FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
import * as Papa from 'papaparse';

@Component({
selector: 'app-spreadsheet',
templateUrl: './spreadsheet.component.html',
styleUrls: ['./spreadsheet.component.css']
})
export class SpreadsheetComponent implements OnInit {
spreadsheetForm!: FormGroup;

constructor(private fb: FormBuilder) {}

ngOnInit(): void {
this.spreadsheetForm = this.fb.group({ rows: this.fb.array([]) });
}

get formArray(): FormArray {
return this.spreadsheetForm.get('rows') as FormArray;
}

onFileUpload(event: Event): void {
const file = (event.target as HTMLInputElement).files?.[0];
if (file) {
Papa.parse(file, {
complete: (result) => this.loadCsvData(result.data),
skipEmptyLines: true
});
}
}

loadCsvData(data: any[]): void {
const rows = this.formArray;
rows.clear();
data.forEach((row) => {
const formRow = this.fb.array(row.map((value: string) => this.fb.control(value, Validators.required)));
rows.push(formRow);
});
}
}

Renderizando dados CSV dinamicamente

Após analisar os dados, o próximo passo é renderizá-los dinamicamente em uma grade que imita uma planilha. Cada linha no FormArray corresponde a uma matriz de FormControl.

No template (spreadsheet.component.html), use diretivas estruturais do Angular para exibir linhas e células:






This field is required.



Adicionando regras de validação

A validação garante que a entrada atenda a critérios específicos. O Angular suporta validadores internos como Validators.required e permite lógica de validação personalizada.

Validador numérico personalizado

Crie um validador personalizado para garantir a entrada numérica:

function validateNumeric(): ValidatorFn {
return (control: AbstractControl): { [key: string]: any } | null => {
const value = control.value;
return isNaN(value) || value.trim() === '' ? { numeric: true } : null;
};
}

Atualize o método loadCsvData para incluir este validador:

loadCsvData(data: any[]): void {
const rows = this.formArray;
rows.clear();
data.forEach((row) => {
const formRow = this.fb.array(row.map((value: string) => this.fb.control(value, [Validators.required, validateNumeric()])));
rows.push(formRow);
});
}

Exportando dados modificados

Uma vez que o usuário modifica o formulário, permita que ele baixe os dados atualizados como um arquivo CSV usando a API Blob.

Eis o código para a exportação do CSV:

downloadCsv(): void {
const headers = ['Column 1', 'Column 2', 'Column 3'];
const rows = this.formArray.controls.map((row) =>
(row as FormArray).controls.map((control) => control.value)
);

const csvArray = [headers, ...rows];
const csvData = csvArray.map((row) => row.join(',')).join('n');

const blob = new Blob([csvData], { type: 'text/csv;charset=utf-8;' });
const url = window.URL.createObjectURL(blob);

const link = document.createElement('a');
link.href = url;
link.setAttribute('download', 'modified-data.csv');
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
window.URL.revokeObjectURL(url);
}

Adicionando botão de download

Finalmente, incluiremos um botão no template para acionar o download:

Conclusão

Ao seguir este guia, você aprendeu a:

  • Analisar arquivos CSV e vincular os dados dinamicamente ao FormArray do Angular
  • Validar a entrada do usuário usando validadores internos e personalizados
  • Exportar dados modificados de volta para um formato CSV

Esta solução é altamente adaptável, tornando-se adequada para vários cenários do mundo real, como grades de dados, pesquisas ou planilhas interativas.

Feliz codificação!

  • Melhores Ações de Glitch no Photoshop 2025

    Descubra as melhores ações de glitch para Photoshop em 2025 e transforme suas fotos com efeitos digitais únicos e inovadores.

    Descubra as melhores ações de glitch para Photoshop em 2025 e transforme suas fotos com efeitos digitais únicos e inovadores.

    Ler notícia completa
    Arte digital de um astronauta com traje espacial flutuando num fundo abstrato colorido, representando o espaço com detalhes de glitch e o logo do Photoshop no canto.
  • Gestão eficaz de equipes de design: dicas práticas

    Aprenda a gerenciar equipes de design com eficácia, equilibrando comunicação, inspiração e autonomia para resultados excepcionais.

    Aprenda a gerenciar equipes de design com eficácia, equilibrando comunicação, inspiração e autonomia para resultados excepcionais.

    Ler notícia completa
    Ilustração de três figuras humanas estilizadas, dispostas em forma de pirâmide sobre um fundo abstrato em tons de cinza.
  • O que é Vibe Coding? Descubra essa tendência

    Design com IA evolui para além dos wireframes, focando em 'vibe coding'. Entenda essa nova era do design digital.

    Design com IA evolui para além dos wireframes, focando em 'vibe coding'. Entenda essa nova era do design digital.

    Ler notícia completa
    Banner de podcast com título
  • 20 Fontes Futuristas Gratuitas para Design Moderno

    As fontes futuristas são caracterizadas por suas formas geométricas e linhas limpas, o que contribui para uma estética moderna e elegante. Elas transformam tipografias básicas em algo mais inovador. Essas fontes adicionam um toque estiloso e contemporâneo aos trabalhos, sendo ideais para projetos que lidam com ideias futuristas ou que buscam apresentar uma imagem ultra-moderna. […]

    Descubra 20 fontes futuristas gratuitas para dar um toque moderno e inovador aos seus projetos de design.

    Ler notícia completa
    Imagem de fundo cósmico com tonalidades de azul e rosa representando o espaço, contendo a palavra
  • 6 Melhores Plugins de Blocos Gutenberg para WordPress

    Uma das características mais promissoras do editor de blocos Gutenberg é a capacidade de adicionar blocos personalizados. Eles podem incluir praticamente qualquer tipo de conteúdo ou funcionalidade que você imaginar. Embora você possa criar seus próprios blocos personalizados, às vezes isso é como reinventar a roda, especialmente quando deseja adicionar elementos comuns, como testemunhos ou […]

    Descubra os 6 melhores plugins de blocos Gutenberg para criar páginas incríveis no WordPress.

    Ler notícia completa
    Interface de usuário de um software com um campo de pesquisa e ícones de recursos como
  • Navegação na Internet para Pessoas Cegas

    Sylvie Duchateau é consultora de acessibilidade digital há mais de 20 anos. Após trabalhar em associações como BrailleNet e na cooperativa Access42, ela decidiu se tornar freelancer. Sylvie é especialista em leitores de tela, oferece treinamentos e testes de acessibilidade, e é voluntária na conferência Paris Web desde 2021. Nos conhecemos na edição de 2024 […]

    Sylvie Duchateau fala sobre desafios e soluções para acessibilidade digital de pessoas cegas na web.

    Ler notícia completa
    Mulher sorridente abraça labrador bege em ambiente interno com plantas ao fundo.
  • Guia de Estilo vs. Sistema de Design: Diferenças

    Embora muitos designers usem guias de estilo e sistemas de design de forma intercambiável, eles são ferramentas distintas com suas próprias forças e fraquezas. Compreender suas diferenças é crucial para evitar impactos negativos no processo de design e desenvolvimento de produtos. Um guia de estilo é um documento que apresenta diretrizes para manter a consistência […]

    Entenda as diferenças entre guias de estilo e sistemas de design e como usá-los no design de produtos.

    Ler notícia completa
    Ícone estilizado de um computador exibindo uma imagem de documento com texto e caixas de marcação, acompanhado de um lápis, sobre fundo texturizado azul.
  • Novas Ferramentas para Designers em Abril 2025

    A temporada de projetos está em alta, e novas ferramentas estão surgindo para ajudar designers a gerenciar fluxos de trabalho com eficiência. Esta seleção inclui algumas novidades que prometem manter sua motivação em alta. Confira as novidades para designers: Smart Keys Smart Keys é uma ferramenta para Mac que melhora a escrita com atalhos de […]

    Descubra as ferramentas inovadoras para designers, como Smart Keys e UX Audit Now, para otimizar seu fluxo de trabalho.

    Ler notícia completa
    Homem jovem com óculos escuros se funde com o texto
  • AI substituirá PMs? Como proteger sua carreira

    Grupos de PMs em redes sociais frequentemente discutem se a IA substituirá seus empregos. Já é comum ver agentes de IA realizando tarefas básicas de gerenciamento de produtos, como criar roteiros e analisar dados. “Oi ChatGPT, pode criar um roteiro de três meses para meu produto?” “Oi Claude, pode ajudar com perguntas de pesquisa para […]

    Descubra como a IA está impactando os gerentes de produto e como eles podem se adaptar para proteger suas carreiras.

    Ler notícia completa
    Duas chaves inglesas roxas cruzadas sobre um fundo texturizado escuro.