angular - Model içinde iç içe geçmiş bir nesneyi nasıl tanımlarım? (angular2/typescript)
Angular2 ile oynuyorum ve birinin bunu başarmanın yolları hakkında bazı tavsiyeler verebileceğini umuyordum;
Örneğin, modelim şu anda bir çalışan için bu şekilde görünüyorsa:
export class Employee {
constructor(
public firstName: string,
public lastName: string,
public email: string,
public days: string,
public hours: string,
){}
}
ve günleri/saatleri kendi nesnelerine yerleştirmek istiyorum, bu nasıl başarılabilir?
(yani gibi..)
public availability: {
public days: string,
public hours: string
},
ve sonra HTTP GET isteği aşağıdaki gibi aynı mı kalır?
getEmployees() {
return this.http.get('...')
.map((response: Response) => {
const data = response.json().obj;
let objs: any[] = [];
for(let i = 0; i < data.length; i++) {
let employee = new Employee(
data[i].firstName,
data[i].lastName,
data[i].email,
data[i].availability.days,
data[i].availability.hours
);
objs.push(employee)
}
return objs
})
}
Sadece netleştirmek için, get isteğimin something like döndürmesini isterim;
var obj = {
firstName: "test",
lastName: "test",
email: "test",
availability: {
days: "test",
hours: "test"
}
}
Umarım birisi yardım edebilir! Etrafına bakmaya çalıştım ama yardımcı olabilecek bir şeyle karşılaşmadım.
Cevap #1
Böyle bir şey
export class Employee {
constructor(
public firstName: string,
public lastName: string,
public email: string,
public availability: Availability // refer to type Availability below
){}
}
export class Availability {
constructor(
public days: string,
public hours: string
){}
}
Http get isteği aynı kalmalı, sonra çalışan için yeni örneği oluşturma şekli değiştirilmeli
let employee = new Employee(
data[i].firstName,
data[i].lastName,
data[i].email,
new Availability(
data[i].availability.days,
data[i].availability.hours
)
);
Cevap #2
Kişisel olarak ( Ionic projesi için ) şöyle bir şey yaptım
export class Availability {
days: string = "";
hours: string = "";
}
export class Employee {
firstName: string = "";
lastName: string = "";
email: string = "";
availability = new Availability()
}
Yani bu modelleri bir <form> içinde kullanırsam, bu Employee sınıfının boş bir yapısını alıyorum.
Ayrıca, örneğin bir Firebase veritabanına sorgu yaptığımda employeeObservable : Observable<Employee[]>; gibi değişkenleri bildirdiğimde de çalışıyor...
