【发布时间】:2017-06-19 14:20:54
【问题描述】:
我在我的项目中使用 Ionic 2 和 Angular 2。在根组件中,您可以单击“添加”按钮通过复杂的表单和大量预先提供的数据添加新报告(有些选择是从 sqlite 数据库获取的数据提供的) 现在在我的“CreateReportComponent”中,我有以下构造函数来加载数据并将其分配给本地数组变量:
selectEmployeeOptions: Employee[];
constructor(private dbService: DatabaseService) {
dbService.getAllEmployees().then(employees => {
this.selectEmployeeOptions = employees;
});
// load more data like tasks etc.
});
但是当我想在我的组件中修改这些数据时,数组是空的。我尝试在 ngOnInit() 中执行此操作,但这似乎还为时过早。
在组件显示之前,我想这样做:
dbService.getAllEmployees().then(employees => {
this.selectEmployeeOptions = employees;
// modify data
this.selectEmployeeTitleOptions = employees.map((item) => {
return item.title;
});
console.log(JSON.stringify(this.selectEmployeeTitleOptions)) // --> empty
});
但是 selectEmployeeTitleOptions 是空的...
databaseService 中的函数如下所示:
getAllEmployees(): Promise<Emplyoee[]> {
let query = "SELECT * FROM employees";
let employeeList = [];
this.database.executeSql(query, []).then((data) => {
if(data.rows.length > 0) {
let e = new Employee();
e.id = data.rows.item(i).id;
e.firstname = data.rows.item(i).firstname;
e.lastname = data.rows.item(i).lastname;
employeeList.push(e);
}
}, (error) => {
// handle error
});
return Promise.resolve(employeeList);
}
我读到有解决模式 (https://blog.thoughtram.io/angular/2016/10/10/resolving-route-data-in-angular-2.html) 但我需要拨打多个电话,而不仅仅是示例中的联系人。
那么问题来了:如何等待多次调用数据库?
【问题讨论】:
标签: sqlite angular typescript ionic2 resolver