У меня есть два раскрывающихся списка: время начала и время окончания, первое раскрывающееся меню использует массив времени, где выбирается время, а затем индекс этого времени используется для среза, а массив создается для второго раскрывающегося списка. Так что время окончания всегда больше времени начала.
Здесь я пытаюсь установить значения по умолчанию при нажатии кнопки отправки, но когда я нажимаю кнопку отправки, тогда я
- не получая заданное значение времени начала, оно отображается пустым и
- получает значение времени окончания в раскрывающемся списке, но в массиве раскрывающихся значений также отображаются значения времени, меньшие времени начала.
template
Start at:
<select
[(ngModel)]="time1"
(change)="onSelect($event.target.value)" id="fTime">
<option value="0" selected>Select</option>
<option [value]="i" *ngFor="let type of startTimeArray; let i = index">
{{type}}
</option>
</select>
End at:
<select
[(ngModel)]="time2"
id="tTime">
<option value="0" selected>Select</option>
<option [value]="type" *ngFor="let type of tempEndTimeArray">
{{type}}
</option>
</select>
<div><button (click)="submit()">click</button></div>
TS
import { Component } from "@angular/core";
import { FormGroup, FormArray, FormBuilder, FormControl } from "@angular/forms";
@Component({
selector: "app-root",
templateUrl: "./app.component.html",
styleUrls: ["./app.component.css"]
})
export class AppComponent {
forTableArray: any = [];
time1:any=[];
time2:any=[];
startTimeArray:any=["07:00 AM","08:00 AM", "09:00 AM", "10:00 AM", "11:00 AM", "12:00 PM", "1:00 PM", "2:00 PM", "3:00 PM", "4:00 PM", "5:00 PM", "6:00 PM", "7:00 PM", "8:00 PM"];
endTimeArray:any=["07:00 AM","08:00 AM", "09:00 AM", "10:00 AM", "11:00 AM", "12:00 PM", "1:00 PM", "2:00 PM", "3:00 PM", "4:00 PM", "5:00 PM", "6:00 PM", "7:00 PM", "8:00 PM"];
public tempEndTimeArray: Array<any>;
public enableEndTime: boolean = true;
submit(){
this.time1="";
this.time2="";
this.tempEndTimeArray =this.startTimeArray;
this.time1="7:00 AM";
this.time2="5:00 PM";
}
public onSelect(val){
console.log(val)
let index = parseInt(val) + 1;
console.log(index)
this.tempEndTimeArray = this.endTimeArray.slice(index);
}
convertTime12to24(time12h) {
const [time, modifier] = time12h.split(" ");
let [hours, minutes] = time.split(":");
if (hours === "12") {
hours = "00";
}
if (modifier === "PM") {
hours = parseInt(hours, 10) + 12;
}
return `${hours}:${minutes}`;
}
}
Кроме того, я не могу получить выбранное значение времени в моей консоли, например, если выбрано 01:00 PM из в раскрывающемся списке, я хочу, чтобы он отображался в консоли, вместо этого я получаю значение индекса (как я установил [value] = i, в моем html выберите раскрывающемся, чтобы я мог использовать слайс для времени)
https://stackblitz.com/edit/angular-r2sv3k