ionic3 bouton activer/désactiver par programme lorsque ion liste est pleine/vide

J'ai une barre de recherche pour que je vérifie pour les événements d'entrée et ensuite filtrer firebase de données.

Voici le code html:

<ion-searchbar (ionInput)="getItems($event)" placeholder="Add tag ... "></ion-searchbar>
<ion-list>
<ion-item *ngFor="let tag of tagList">
<h2> {{ tag.name }} </h2>
</ion-item>
</ion-list>

et c'est le ts de code:

getItems(searchbar) {
 //Reset items back to all of the items
this.initializeItems();

 //set q to the value of the searchbar
var q = searchbar.srcElement.value;

//if the value is an empty string don't filter the items
if (!q) {
return;
}

this.tagList = this.tagList.filter((v) => {
if(v.name && q) {
  if (v.name.toLowerCase().indexOf(q.toLowerCase()) > -1) {
    return true;
  }
  return false;
}
 });

}

Ce code fonctionne bien, mais maintenant, je voudrais activer un bouton à chaque fois que la liste chargé sur l'affichage est vide, tout en gardant désactivé quand il y a au moins un élément chargé. Le code pour le bouton est celui-ci:

  <button ion-button [disabled]="!isEnabled">Add tag</button>

- Je changer la valeur de isEnabled à true ou à false dans le getItems() méthode, de cette façon:

if (this.tagList.length==0){
console.log('No elements ')
this.isEnabled=true;
  } else {
    console.log('Elements ')
    this.isEnabled=false;
  }

mais le bouton reste désactivé (lors de la première saisie de la page, isEnabled est marqué comme false par défaut).

Les journaux sont affichés correctement quand j'écris quelque chose dans la barre de recherche, c'est-à chaque fois que j'entre dans une lettre de la console sorties "éléments" ou "pas d'éléments" en fonction de si la liste des éléments ou pas, mais le bouton reste désactivé.

Comment puis-je résoudre ce problème? Ai-je raté quelque chose?

EDIT: voici le code où j'ai mis isEnabled :

getItems(searchbar) {
  //Reset items back to all of the items
  this.initializeItems();

  //set q to the value of the searchbar
  var q = searchbar.srcElement.value;
  this.textSearch = q;

  //if the value is an empty string don't filter the items
  if (!q) {
    return;
  }

  this.tagList = this.tagList.filter((v) => {
  if(v.name && q) {
     if (v.name.toLowerCase().indexOf(q.toLowerCase()) > -1) {
     return true;
  }
  return false;
   }
 });

 if (this.tagList.length==0){
   this.isEnabled = true;
 } else{
   this.isEnabled = false;
 }
}
  • console.journal(ce.isEnabled) dans d'autre partie et de voir à quoi son retour
InformationsquelleAutor Dseaster | 2017-06-21