Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Atualização da view na remoção de itens da lista

Essa é uma dúvida que talvez seja de Javascript, eu fiz o curso de Angular 1, mas já faz tempo, lembro do uso do splice que pega o index do elemento e remove do array, mas não entendi direito porque no Angular 2 precisa de um novo array (se entendi direito) para atualizar a view. Já vi alguns exemplos, acho que até no curso de ES6 I, que você utilizou concat, sei que o map também gera uma cópia do array original, poderia usar uma dessas alternativas nesse caso? Já vi a utilização desse método slice, mas porque slice(0)?

let novasFotos = this.fotos.slice(0);
                let indice = novasFotos.indexOf(foto);
                novasFotos.splice(indice, 1);
                this.fotos = novasFotos;
                this.mensagem = "Foto removida com sucesso";
2 respostas
solução!

Olá, Gisele.

O método slice gera uma cópia do array. Esse 0 indica que vai pegar desde o elemento 0 (primeiro elemento do array), e é totalmente opcional. this.fotos.slice() teria o mesmo efeito.

Pra uma referência melhor: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Array/slice

Quanto ao concat e o map, não vejo como você removeria o item desejado utilizando um desses 2 métodos. O ideal é o splice mesmo, ou, se quiser pesquisar uma outra forma, o filter: https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Array/filtro

Espero ter ajudado. Abraços e bons estudos!

Ainda tenho muito o que aprender de Javascript, o problema é que eu utilizei muito Jquery e algumas situações, você acaba resolvendo de forma diferente, mas nunca tinha precisado fazer cópia de array, eu vi uma vez com angular 1 que tem uma função do próprio AngularJS, mas como eu utilizei o Javascript por demanda (depende da necessidade), muitas coisas eu não sei.