На самом деле я хочу разделить некоторые нет. временных интервалов между startTime и endTime, и я сделал это с помощью временного интервала службы, а затем собрал их в массив, и теперь я хочу собрать временные интервалы на неделю, поэтому я могу использовать эти временные интервалы для бронирования назначение врача, отображая временные интервалы определенного выбранного дня для пользователя, поэтому я использовал a для l oop, и когда я собирался сделать pu sh этот массив элементов, который является временными интервалами, уже сгенерированными между startTime и endTime, он отказывается, мой файлы машинописного текста указаны ниже
обновление Doctor.ts
async updateDoctor()
{
if(this.doctor.startTime && this.doctor.endTime && this.doctor.interval)
{
this.showAlert("reached service")
this.doctor.timeSlots = this.fbtimeservice.divideTimeSlots(this.doctor.startTime , this.doctor.endTime,this.doctor.interval)
}
await this.fbservice.updateDoctor(this.doctor).then(()=> {
this.router.navigateByUrl(`/view-doctor/${this.doctor.id}`)
});
}
Делить-время-слот.service.ts
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class DivideTimeSlotService {
// startTime:string = "11:00:00";
// endTime = "12:00:00";
times_ara: any[];
weeks: any[];
constructor() { }
ngOnInit() {
// let interval = 30;
console.log(this.times_ara)
}
divideTimeSlots(startTime :string , endTime:string ,interval:number)
{
let start_time = this.parseTime(startTime);
let end_time = this.parseTime(endTime);
for(let i=0;i<7;i++)
{
this.times_ara = this.calculate_time_slot( start_time, end_time , interval);
this.weeks.push(this.times_ara)
}
console.log("weeks is "+this.weeks)
return this.weeks
}
parseTime(s: string) {
var c = s.split(':');
return parseInt(c[0]) * 60 + parseInt(c[1]);
}
convertHours(mins: number)
{
let hour = Math.floor(mins/60);
let mins2 = mins%60;
var converted = this.pad(hour, 2)+':'+this.pad(mins2, 2);
return converted;
}
pad(str: string | number | any[], max: number) {
str = str.toString();
return str.length < max ? this.pad("0" + str, max) : str;
}
calculate_time_slot(start_time: number, end_time: number, interval: number){
// var i, formatted_time;
let time_slots = new Array();
for(let i=start_time,j=1; i<=end_time-interval; i = i+interval,j++){
let slotTime1 = this.convertHours(i);
let slotTime2 = this.convertHours(i+interval);
let slotTime = slotTime1+" - "+slotTime2
let slotId =1000+j;
let slotDate : Date =null;
let slotStatus :string = "available"
time_slots.push({slotId,slotTime,slotDate,slotStatus});
}
return time_slots;
}
}
в функции DivideTimeSlots, если я удаляю для l oop и возвращаю times_ara, он возвращает массив только слотов между startTime и endTime, я хочу, чтобы они выглядели примерно так image