离子运行时错误无法读取未定义的属性“0”

时间:2017-11-03 16:02:42

标签: typescript firebase ionic-framework firebase-realtime-database ionic2

我在home.ts的代码就像这样

schools: any;

 ionViewWillLoad(){

   this.afoDatabase.list('/students',
  {
    query:{
          orderByChild: 'department',
          equalTo: this.schools[0].department
        }
  }).subscribe(snap => {
    this.students = snap;
  });
  }

实际上,变量学校在开始时未设置为任何值。只有在页面加载后才能设置学校变量。 当我将 equalTo 的值硬编码为“xyz”而不是this.schools [0] .department时它按预期工作。

所以现在应该如何构建查询以便我不会得到

  

运行时错误无法读取未定义的属性“0”

更新

当我将学校宣言改为

schools: any[]=[];

我收到错误

  

无法读取未定义的属性“部门”

每当定义值时,我只想查询,否则我不想查询。我该怎么写这个条件?

1 个答案:

答案 0 :(得分:0)

我面临同样的问题(我正在学习 ionic )。我能够通过将函数调用放在 ngOnInitionViewWillEnter 中来解决它的唯一方法。当我声明数组时,我收到关于“title”属性的错误。

当我从 ngOnInit 中删除函数调用时,我收到错误:ERROR TypeError: Cannot read property '0' of undefined

我的例子很简单。我有一个服务,它有一个带有 getter 的私有数组来获取其内容。我没有为我的示例进行任何数据库调用。

这是对我有用的类型脚本代码。

  loadedPlaces: Place[];
  listedLoadedPlaces: Place[]; //for virtual scroll

  constructor(private placesService: PlacesService, private menuCntrl: MenuController) { }

  ngOnInit() {
    console.log('ngOnInIt');
    this.loadData();
  }

  ionViewWillEnter(){
    console.log('ionViewWillEnter');
    this.loadData();
  }

  loadData(){
    this.loadedPlaces = this.placesService.places; //getter property
    //for the virtual scroll
    this.listedLoadedPlaces = this.loadedPlaces.slice(1);
  }

我的环境

node: v14.15.5
npm: 6.14.11
angular: 11.2.0
ionic: 6.13.1