【发布时间】:2018-07-12 23:42:27
【问题描述】:
我想把日期选择器放在一个永久可见的边栏中,并且不依赖于输入,这可能吗? 我想只要放置组件并添加 opens = true 就可以让日期选择器始终可见。
【问题讨论】:
-
你找到答案了吗?我正在尝试做同样的事情
我想把日期选择器放在一个永久可见的边栏中,并且不依赖于输入,这可能吗? 我想只要放置组件并添加 opens = true 就可以让日期选择器始终可见。
【问题讨论】:
事实证明这是非常简单的,像往常一样导入 MatDatePickerModule,然后简单地使用 mat-calendar 选择器
<mat-calendar></mat-calendar>
为了通过打字稿挂钩选择
@ViewChild(MatCalendar) _datePicker: MatCalendar<Date>
ngOnInit() {
this._datePicker.selectedChange.subscribe(x => {
console.log(x);
});
}
【讨论】:
<mat-calendar [selected]="selectedDate" (selectedChange)="selectedDate = $event"> </mat-calendar> - 这避免了viewchild并且还使日历显示选择的日期
<mat-calendar></mat-calendar> 将始终使用今天的日期
readonly selectedChanged: EventEmitter<D>; * @deprecated 切换到输入元素上的dateChange 和dateInput 绑定。 * @deletion-target 6.0.0
你也可以尝试用 css ex 隐藏:
<mat-form-field style="width:1px;visibility:hidden;">
<input matInput [matDatepicker]="picker" >
<mat-datepicker #picker></mat-datepicker>
</mat-form-field>
<button mat-button (click)="picker.open()" ></button>
用css隐藏的好处是日期选择器是相对于隐藏的表单域定位的
【讨论】:
MatFormFieldModule, MatInputModule
我发现的唯一可行的方法是大而笨拙但可行:
<mat-form-field id="dashboardComponent">
<input matInput
[matDatepicker]="matDatepicker"
[formControl]="dateFormControl"
(dateChange)="onDateChanged('change', $event)"
[max]="datePickerMaxDate"
>
<mat-datepicker-toggle matSuffix [for]="matDatepicker"></mat-datepicker-toggle>
<mat-datepicker #matDatepicker></mat-datepicker>
</mat-form-field>
@Component({
....
encapsulation: ViewEncapsulation.None
})
export class MyComponent {
// Date Picker
public currentDate: Date = new Date() // set default here
public dateFormControl: FormControl = new FormControl(this.currentDate)
/* DATE PICKER */
mat-form-field {
margin: 0 0.5em; //adapt me to your needs
width: 0.8em; //adapt me to your needs
font-weight: normal;
}
#dashboardComponent {
.mat-form-field-underline {
background-color: transparent;
height: 0;
}
}
【讨论】: