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

Problema com angular expression

Olá pessoal!

Trabalho tanto com angular2/4 como angularjs 1.5. Em ambos não tive problemas ao executar o *ngFor (para angular2/4) como o ng-for (para o angularjs 1.5).

No entanto, trabalhando agora com o Ionic 2, ao criar uma lista, com dados q obtive do banco, os dados no html não são atualizados. Segue abaixo o template que usei.

{{ prayers.length }}
  <ion-list *ngIf="prayers.length > 0">
    <ion-item *ngFor="let prayer of prayers">
      <h3>{{ prayer.title }}</h3>
      <p>{{ prayer.body }}</p>
    </ion-item>
  </ion-list>

Usei os seguintes métodos para atualizar buscar os dados.

Método 1

ngOnInit(): void {
    console.log('ngOnInit Prayers');
    this._dataBaseProvider.getAllPrayers()
    .then( list => {
      for(let i=0; i < list.length; i++){
        console.log('item '+(i+1)+'  da lista',list[i]);
        this.prayers.push(list[i]);
      }
    });
  }

Método 2

  ngOnInit(): void {
    console.log('ngOnInit Prayers');
    this._dataBaseProvider.getAllPrayers()
    .then( list => {
      this.prayers = list;
      console.log('orações: ',this.prayers);
    });
  }

Utilizando os dois métodos acima, não obtive resultado pois a view não se atualiza com os dados. Nem mesmo o trecho que contém o seguinte código {{ prayers.length }}. O mesmo permanece com o valor 0 (zero) que é o valor inicial quando a view inicializa .

Enfim, estou buscando os dados antes e depois já enviando os para a view para obter resultado. Mas acho isso muito estranho. Estou errando em algum ponto?

Desde já agradeço!

3 respostas

Olhando seu template

{{ prayers.length }}
  <ion-list *ngIf="prayers.length > 0">
    <ion-item *ngFor="let prayer of prayers">
      <h3>{{ prayer.title }}</h3>
      <p>{{ prayer.body }}</p>
    </ion-item>
  </ion-list>

Parece estar tudo OK. O que pode estar acontecendo é que sua API não esta jogando em this.prayers uma lista, e sim um objeto que pode conter uma lista. Tem que verificar sua API e os dados retornados.

solução!

O problema foi solucionado ao excluir a pasta node_modules, mas não da primeira vez.

Algum fator estranho influenciou, algo q não deve ser comum de ocorrer. Reverti minhas tarefas e procurei começar novamente de forma mais atenta, e desta outra vez funcionou normalmente. Bastante estranho, mas foi o que ocorreu.

Agradeço a atenção!

Olá Jocsã! Obrigado pelo retorno. Sucesso e bom estudo!