Я выполняю итерацию коллекции документов и подтерации для каждого родительского элемента итерации.
public getxxxxxTimings(key : string) : any {
console.log('key '+key);
return this.afs.collection('/xxxxx/'+key+'/slots').doc('1').ref.get().then((doc)=>{
let json = doc.data();
console.log('json data '+json);
console.log("Document keys:", Object.keys(json));
Object.keys(json).forEach((name) => {
this.timingRef = new Timing();
console.log('name '+name);
this.timingRef.slot = name;
this.timingRef.available = json[name];
this.afs.collection('/slots/').doc(name).ref.get().then((doc)=>{
let json2 = doc.data();
console.log('json data '+json2);
console.log("Document keys:", Object.keys(json2));
Object.keys(json2).forEach((name2) => {
if(name2 == 'from'){
this.timingRef.from = json2[name2];
}
else{
this.timingRef.to = json2[name2];
}
})
console.log('Timings count '+this.Timings.push(this.timingRef));
})
})
return this.Timings;
});
}
В приведенном выше коде родительский цикл подготавливает объект в каждой итерации и передает его в коллекцию.
Проблема заключается в том, что все объекты заполняются последними итеративными значениями, когда журналы отображаются, как и ожидалось.
key -KiDPBvL9xG7_hAQ0kpv
timingmodal.ts:29 key -KiDPBvL9xG7_hAQ0kpv
user-service.ts:119 key -KiDPBvL9xG7_hAQ0kpv
timingmodal.ts:38 ionViewDidLoad TimingmodalPage
user-service.ts:123 json data [object Object]
user-service.ts:124 Document keys: (4) ["1", "2", "3", "5"]
user-service.ts:127 name 1
user-service.ts:127 name 2
user-service.ts:127 name 3
user-service.ts:127 name 5
user-service.ts:132 json data [object Object]
user-service.ts:133 Document keys: (2) ["from", "to"]
user-service.ts:145 Timings count 1
user-service.ts:132 json data [object Object]
user-service.ts:133 Document keys: (2) ["from", "to"]
user-service.ts:145 Timings count 2
user-service.ts:132 json data [object Object]
user-service.ts:133 Document keys: (2) ["from", "to"]
user-service.ts:145 Timings count 3
user-service.ts:132 json data [object Object]
user-service.ts:133 Document keys: (2) ["from", "to"]
user-service.ts:145 Timings count 4
Пользовательский интерфейс записан как
<ul>
<li *ngFor="let timing of Timings | async">
{{ timing.slot }} -{{ timing.from }} -- {{ timing.to }}-- {{ timing.available }}
</li>
</ul>
Значения отображаются, как показано ниже.
В идеале это должно быть как ..
1-9-10 - правда
2-10-11 - правда
3-11-12 - ложь
5-13-14 - правда
Что мне здесь не хватает, пожалуйста, сообщите.