为什么在从Observable推送元素后,我的数组是未定义的

时间:2018-02-05 07:44:36

标签: javascript angular typescript ionic-framework

基本上,我有一个Web应用程序,它使用rxjs observables从Firebase检索数据。

这是我的代码,

initializeItems(){   
  this.travelList$ = this.plsdala.getTravelList()
  .snapshotChanges()
  .map(
    changes => {
      return changes.map(c=>({
        key: c.payload.key, ...c.payload.val()
      })).slice().reverse();//to reverse order
    })
    this.travelList$.subscribe(res => {
    for(let i=0;i<res.length;i++){
   this.ListOfitems.push (res[i].toAddress);
    }
  })
}

这是从构造函数中调用的。这里的问题是我无法检查它是否成功推送,如果尝试在控制台中打印,它将无法打印。为什么? 过滤需要推送的元素。继承人是过滤器的代码。但是当我在控制台中打印this.ListOfitems它是未定义的,我想知道为什么?首先初始化元素

getItems(ev: any) {
   console.log("awdaw");
   console.log(this.ListOfitems);
   if (this.ListOfitems.length>1){
     console.log("otin");
     let val = ev.target.value;
     if (val && val.trim() != '') {
       this.ListOfitems = this.ListOfitems.filter((ListOfitems) => {
         return (ListOfitems.toLowerCase().indexOf(val.toLowerCase()) > -1);
       })
     }
   }
}

1 个答案:

答案 0 :(得分:0)

当您要声明项目列表时,如果要推入数组,则需要先将其声明为空:

ListOfitems:string [] = [];