РЕЗЮМЕ: Я предположительно беру некоторые объекты Org, которые имеют методы класса. Но когда я беру свои данные, я вижу экземпляры Object, а не экземпляры Org. Это лучший доступный результат? Или я могу убедить свою программу предоставить объекты Org?AngularJS 2 a Решение Promise теряет идентификатор класса после feching
ДЕТАЛИ: Я работаю с последней версией Angular 2. Мой код немного изменяет код учебника. Вот часть моего org.service.ts:
getOrgs(): Promise<Org[]> {
return this.http
.get(this.orgUrl)
.toPromise()
.then(response => response.json().data as Org[])
.catch(this.handleError);
}
getOrg(id: number): Promise<Org> {
return this.getOrgs()
.then((orgs: Org[]) : Org => orgs.find(org => org.id === id));
}
Вот часть моего разрешения имен:
resolve(route: ActivatedRouteSnapshot): Promise<Org>|boolean {
let id = this.authService.user.orgId;
return this.orgService.getOrg(id).then((org: Org) : Org|boolean => {
if(org) { // <-- Breakpoint here
return org;
} else {
// If the Org isn't available then the edit page isn't appropriate.
this.router.navigate(['/provider/home']);
return false;
}
});
}
Я выборка моих данных через в памяти службы:
export class InMemoryDataService {
createDb() {
let org1 = new Org();
org1.id = 12;
org1.donor = true;
org1.name = 'Great Actors Theater';
let org2 = new Org();
org2.id = 19;
org2.donor = false;
org2.name = 'Sunnyside Group Home';
let org: Org[] = [];
org.push(org1);
org.push(org2);
[SNIP]
И мой класс Org, как это:
export class Org {
id: number;
donor: boolean;
name: string = "";
deepCopy(): Org { ... }
equals(other: Org): boolean { ... }
}
Когда я просматриваю свои данные в точке останова, я вижу объект, у которого есть поля (id, donor, name), но нет функций. Я также не вижу определения Org там - если я вызываю «org instanceof Org», я получаю сообщение об ошибке, что Org не может быть найден. И «typeof org» дает «объект».
Я хочу иметь equals() и т. Д., Как метод класса Org. Но в настоящее время у меня есть только объекты Javascript, которые являются , как Org только утка-типизация. Могу ли я поправляться?
Thanks, Jerome.
Это работает для меня. В моем примере выше getOrgs(), затем() изменится на .then (response => response.json(). Data.map ((d: any) => новый Org (d)) как Org []). Спасибо огромное! –