我在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[]=[];
我收到错误
无法读取未定义的属性“部门”
每当定义值时,我只想查询,否则我不想查询。我该怎么写这个条件?
答案 0 :(得分:0)
我面临同样的问题(我正在学习 ionic )。我能够通过将函数调用放在 ngOnInit
和 ionViewWillEnter
中来解决它的唯一方法。当我声明数组时,我收到关于“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