Envio de subarray patchvalue Angular | Fórum | School of Net

Deseja poder participar de nosso fórum e tirar todas as suas dúvidas?
Clique aqui e assine nosso plano de acesso ilimitado. Saiba mais.

por

1 mês, 1 semana atrás

Envio de subarray patchvalue Angular

Olá, estou com a mesma dúvida desta pergunta reportada anteriormente, segui conforme explicado para o outro aluno, porém é apresentado um erro: Ao tentar utilizar o foreach em: ``` telefoneArray.foreach(tel => { const telefoneGroup = this.createTelefone(); telefoneGroup.patchValue(tel); telefoneArray.push(telefoneGroup) }) ``` Apresenta o erro "A propriedade 'foreach' não existe no tipo 'FormArray'" no mesmo código o patchValue apresenta o erro "A propriedade 'patchValue' não existe no tipo 'void'" e por último, na última linha telefoneArray.push(telefoneGroup) em telefoneGroup é mostrado o erro "O argumento do tipo 'void' não é atribuível ao parâmetro do tipo 'AbstractControl'." Neste meu ts existe uma modal onde são incluídos valores que depois são lançados na lista com os demais itens, por exemplo, eu tenho um cadastro de fornecedores que podem receber vários telefones, então na modal abre um formulário para inserção individual de cada contato que depois é lançado na listagem, que só será armazenada no banco de dados no momento de gravar os dados gerais. Anteriormente eu habilitava o cadastro de telefones somente depois que o cadastro do fornecedor era gravado no banco, desta forma ficava mais fácil, pois eu já tinha o ID do usuário para armazenamento individual de cada contato e no momento que inseria um novo contato, os dados também eram gravados no banco vinculado ao usuário, por fim o service buscava o novo item para apresentar na listagem. Consegui incluir os dados na listagem sem problema, através do cadastro na modal, o problema é que usando o patchValue, ele só pega o último item lançado na Array e não todos os índices, justamente o que acontece nesta pergunta do colega. Um detalhe importante, na inicialização do formulário, eu não inicio os telefones como uma array, mas sim como um grupo, e só vou indicar a array na declaração do telefone, conforme código: ``` iniciarFormulario() { this.form = this.fb.group({ nome: [''], razao: [''], ie: [''], cnpj: [''], cpf: [''], tipo: [''], email: [''], site: [''], observacao: [''], contato: [''], telefones: this.fb.group({ nome_recado: [''], operadora: [''], numero: [''], tipo: [''], whatsapp: [''] }), }) } ``` Para telefones eu tenho duas declarações, telefones e listaTelefones, que faz a listagem que será lançada página após concluir o cadastro na modal. ``` listaTelefones: Telefone[] = []; telefones: Telefone; ``` Foi necessário fazer desta forma porque se eu lanço um novo registro na modal, ele desfaz o registro anterior e repete o segundo cadastrado. Baseado neste relato, gostaria de submeter o formulário com todos os contatos contidos na Array, lembrando que minha dúvida inicia no erro de foreach e patchValue. Se preferir visualizar no repositório, me envie um e-mail para vincular o projeto, pois está privado no bitbucket. Agradeço desde já.

5 Respostas