2
respostas

Usando getter em uma arrow function

Como posso utilizar getter e setters dentro de funções anônimas? É possível fazer isso com typescript?

Encapsulei o atributo titulo da classe FotoComponent e criei um getter e um setter para ele:

@Include() private titulo: String;

get Titulo() : String { return this.titulo; }

set Titulo(value: String) { this.titulo = value; }

Quando tento utilizar esta propriedade no método transform, é gerado um erro: Cannot read property toLowerCase of undefined.

transform(fotos: FotoComponent[], textoDigitado: String): FotoComponent[]{
        return fotos.filter(foto => foto.Titulo.toLowerCase().includes(textoDigitado.toLowerCase()));
    }
2 respostas

Bom dia. Não é possível :) São métodos de classe (do componente).

Ah, espera aí (agora que eu entendi sua dúvida), é possível chamar uma propriedade getter e setter dentro de uma arrow function sim. Se o seu código esta dando erro, é porque o dado não esta chegando, simplesmente foto.Titulo não tem valor algum.

Outra coisa, não se cria método nem getters começando com maiúsculo. Sua contribuição seria recusada por uma equipe de desenvolvedores por não ter seguido uma das convenções mais difundida do mundo da programação. Dá uma ajeitada nisso para ficar bonito. Se você fez isso porque esta conflitando o nome da propriedade com o nome do getter, basta aplicar o que aprendeu no curso que de ES6 (pré-requisito desse curso) que é declarar a propriedade como _titulo e os getter comotitulo.

Acabei de verificar que você não fez ou não o concluiu o curso de ES6 pré-requisito do curso de Angular, então não sei se compreenderá a sugestão que dei acima. Sem ele você terá muita dificuldade com Angular, porque TypeScript não é Java, é superset do ES6. Um exemplo é a dificuldade que teve na hora de criar o getter e o setter. Veja com carinho a necessidade de fazer o curso, combinado? Seu aproveitamento será ainda melhor,.

Sobre o problema que você esta tendo, faça o checklist:

  • Se a associação for formulário com a propriedade do objeto estava correta, se não estava, seu backend gravou undefined para o título e isso lhe causará problemas.
  • Se você incializou o array fotos com um array vazio, []. Se não fez isso, receberá esse erro também.

Se por acaso você gravou dados errados no banco, terá que apagar odata.db do seu projeto (com a API parado) e copiar o data.db do projeto de download.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software