Issue
I have a service that can use manually entered data in an array and everything works fine. However when I retrieve data from a database, the public geemployee: GElist[] runs before finishing retrieving the data. If I bring the data retrieval into the same service I receive the Error Property 'databaseModelEmployees' is used before its initialization. How can I initialize this data before use?
ts
import { Contractor } from '../../types';
import { FindingCat } from '../../types';
import { GElist } from '../../types';
import { DatabaseModelService } from './database-model.service';
import { Storage } from '@ionic/storage';
@Injectable()
export class EmployeeService {
databaseModelEmployees: any;
public contractors: Contractor[] = this.databaseModelService.databaseModel[0].Contractor;
public findingcat: FindingCat[] = this.databaseModelService.databaseModel[1].FindingCat;
public geemployee: GElist[] = this.databaseModelService.databaseModelEmployees; // runs before the data is retrieved
public geemployee2: GElist[] = this.databaseModelEmployees; // failProperty 'databaseModelEmployees' is used before its initialization.
constructor(
private databaseModelService: DatabaseModelService,
public storage: Storage ) {
this.getData();
}
getData() {
this.storage.get("favEmployees").then((employees) => {
let employeeList = JSON.parse(employees)
this.databaseModelEmployees = employeeList;
});
}
}
Solution
Looks like the answer was a lot simpler than I though. I moved the equals into the storage.get
ts
import { Injectable} from '@angular/core';
import { Contractor } from '../../types';
import { FindingCat } from '../../types';
import { GElist } from '../../types';
import { DatabaseModelService } from './database-model.service';
import { Storage } from '@ionic/storage';
@Injectable()
export class EmployeeService {
public contractors: Contractor[] = this.databaseModelService.databaseModel[0].Contractor;
public findingcat: FindingCat[] = this.databaseModelService.databaseModel[1].FindingCat;
public geemployee: GElist[];
databaseEmployees: any;
constructor( private databaseModelService: DatabaseModelService, public storage: Storage ) {
this.getEmployee();
}
getEmployee() {
this.storage.get("favEmployees").then((employees) => {
let empList = JSON.parse(employees)
this.databaseEmployees = [ { ID: 1, Name: "Employees", list: empList} ];
this.geemployee = this.databaseEmployees;
console.log("this.geemployee",this.geemployee);
});
}
}
Answered By - Thomas Degroot
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.