#angular #typescript #angular11
#angular #typescript #angular11
Вопрос:
Я хочу написать о выборе даты в angular Я хочу написать проверку даты, чтобы следующая дата не была выбрана angular пример: сегодня дата 17/12/2020 вы можете выбрать дату 17 или 16 или больше 17, но вы не можете выбрать дату 18 или меньше 17. Я хочу знать, как писать в angular
html-файл:
<div class="form-group col-md-6">
<label for="date">Date</label>
<input type="date" formControlName="date" class="form-control" id="date" placeholder="date">
</div>
файл add-ticket.component.ts
import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms';
import { Component, OnInit } from '@angular/core';
import { TicketService } from 'src/app/services/ticket/ticket.service';
import Swal from 'sweetalert2/dist/sweetalert2.js';
@Component({
selector: 'app-add-ticket',
templateUrl: './add-ticket.component.html',
styleUrls: ['./add-ticket.component.scss']
})
export class AddTicketComponent implements OnInit {
public addTicketForm: FormGroup;
constructor(
public ticketService: TicketService,
public fb: FormBuilder
) { }
ngOnInit() {
this.ticketService.getTicketsList();
this.buildForm();
}
successNotification(){
Swal.fire({
text: 'Your ticket has been saved',
icon: 'success',
}).then((result) => {
window.location.href = "./../ticket";
})
}
sources = [
{ name: 'website' },
{ name: 'Facebook' },
{ name: 'Line' },
{ name: 'Email' },
{ name: 'Telephone' },
{ name: 'Onsite' }
]
types = [
{ name: 'info' },
{ name: 'consult' },
{ name: 'problem' },
{ name: 'add-ons' }
]
prioritys = [
{ name: 'low' },
{ name: 'medium' },
{ name: 'high' }
]
buildForm() {
this.addTicketForm = this.fb.group({
date: [''],
source: [''],
siteName: ['', [Validators.required]],
maintenancePackage: ['', [Validators.required]],
product: ['', [Validators.required]],
module: [''],
creater: ['', [Validators.required]],
type: [''],
subject: ['', [Validators.required]],
priority: [''],
description: [''],
resolveDescription: [''],
})
}
get date() {
return this.addTicketForm.get('date');
}
get source() {
return this.addTicketForm.get('source');
}
get siteName() {
return this.addTicketForm.get('siteName');
}
get maintenancePackage() {
return this.addTicketForm.get('maintenancePackage');
}
get product() {
return this.addTicketForm.get('product');
}
get module() {
return this.addTicketForm.get('module');
}
get creater() {
return this.addTicketForm.get('creater');
}
get type() {
return this.addTicketForm.get('type');
}
get subject() {
return this.addTicketForm.get('subject');
}
get priority() {
return this.addTicketForm.get('priority');
}
get description() {
return this.addTicketForm.get('description');
}
get resolveDescription() {
return this.addTicketForm.get('resolveDescription');
}
addTicketData() {
this.ticketService.addTicket(this.addTicketForm.value);
}
}
Ответ №1:
Попробуйте указать минимальные и максимальные значения в поле даты ввода (поле min не является обязательным)
<input type="date" formControlName="date" min="2020-12-12" max="2020-12-17" class="form-control" id="date" placeholder="date">
если вы хотите ограничить сегодняшней датой
<input type="date" formControlName="date" min="2020-12-12" [max]="today" class="form-control" id="date" placeholder="date">
в ts
today = new Date().toJSON().split('T')[0]
вы можете пропустить min
поле, если не хотите указывать минимальную дату
Комментарии:
1. как объявить «сегодня» в ts?
2. просто вставьте эту строку в ts, today = new Date().toJSON().split(‘T’)[0]
3. теперь закончена максимальная дата, но теперь я хочу написать минимальную дату менее 1 месяца
4. попробуйте следующее: в ts minDate = новая дата(новая дата().setMonth(новая дата().getMonth() — 1)).toJSON().split(‘T’)[0];
5. В html: <тип ввода =»дата» formControlName=»дата» [min]=»minDate» [max]=»сегодня» класс =»элемент управления формой» идентификатор =»дата» заполнитель =»дата»>
Ответ №2:
Вы могли бы добиться этого, просто установив max
атрибут input
тега.
<div class="form-group col-md-6">
<label for="date">Date</label>
<input type="date" formControlName="date" class="form-control" id="date" placeholder="date" max="2020-12-17">
</div>
Поскольку вы используете Angular, вы можете связать его следующим образом [max]='(new Date).toISOString().split("T")[0]'
Комментарии:
1. Как объявить max в ts