【发布时间】:2026-01-02 11:10:01
【问题描述】:
我正在尝试借助 Angular 材料在 Angular 7 中创建一个日期范围选择器。但是每当我单击日历时,输入字段上的值都不会更新。我在下面分享我的代码。
正如您从下面的代码中看到的那样,我在第二个输入字段上编写了一个点击函数。单击它会打开两个日历,一个用于开始日期,另一个用于结束日期。但是,每当我尝试单击任何日期时,它只会保存今天的日期。谁能帮我解决这个问题。
input-overview-example.html
<mat-form-field>
<input matInput [matDatepicker]="strtpicker" [value]="date.value" placeholder="Start Date" >
</mat-form-field>
<mat-form-field class="ml-20">
<input matInput [matDatepicker]="endpicker" [value]="date.value" placeholder="Choose a date" (click)="dateRange()">
</mat-form-field>
<div class="d-flex" *ngIf="show">
<mat-card >
<p>Start Date</p>
<mat-calendar ></mat-calendar>
</mat-card>
<mat-card>
<p>End Date</p>
<mat-calendar></mat-calendar>
</mat-card>
</div>
input-overview-example.ts
import {Component} from '@angular/core';
import {FormControl} from '@angular/forms';
import {MatDatepickerInputEvent} from '@angular/material/datepicker';
/**
* @title Basic Inputs
*/
@Component({
selector: 'input-overview-example',
styleUrls: ['input-overview-example.css'],
templateUrl: 'input-overview-example.html',
})
export class InputOverviewExample {
events: string[] = [];
addEvent(type: string, event: MatDatepickerInputEvent<Date>) {
this.events.push(`${type}: ${event.value}`);
}
date = new FormControl(new Date());
show: boolean;
dateRange() {
this.show = true;
}
}
【问题讨论】:
-
好吧,你需要两个 formControls 或一个带有两个 formControls 的 formGroup。要单独使用 formControl,请使用
[formControl]="date",而不是 [value]="date.value",要使用 formGroup,请参阅 @kris Hollenbeck 答案
标签: angular typescript angular-material