Angular2 日期时间选择器建议
Angular2 datetime picker suggestions
我正在 Angular2 中寻找日期时间选择器,- 我有一个使用 HTML5 的日期时间选择器,方法是将输入类型设置为日期,这很有效。
然而,它不符合我的要求,因为我需要根据今天的日期减去 5 天来设置 mindate,而 maxdate 是今天 - 运行时验证。所以不能真正硬编码 html.
中的值
尝试使用 ngbDatepicker 但没有成功。
非常感谢任何建议。
下面是我尝试使用 ngbDatePicker 时的代码:-
App.module.shared.ts
import { Component, NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
@NgModule({
declarations:
[
AppComponent
],
imports:
[
CommonModule,
NgbModule.forRoot()
]
DateComponent.ts
export class DateComponent implements OnInit
{
public model : Date;
}
DateComponent.html
<form [formGroup]="myForm">
<div>
<div class="input-group">
<input class="form-control" placeholder="dd-mm-yyyy" name="dp"
[(ngModel)]="model" ngbDatepicker #d="ngbDatepicker" [ngModelOptions]="
{standalone: true}">
<div class="input-group-addon" (click)="d.toggle()" >
<i class="glyphicon glyphicon-calendar" aria-hidden="true"></i>
</div>
</div>
点击日历不显示日期时间选择器
这是一个相当主观的问题,因此您可能会得到基于意见的答复 - 包括这个。
就是说,您 不需要 为此使用第 3 方组件 - 虽然您当然可以 - 但快速 google 会揭示这些,所以我不会提到他们。
避免第 3 方选项,如果您使用的是模型驱动表单,您可以通过组合 HTML5 input type='date'
(如前所述)和自定义 angular 验证器。类似于以下内容:
HTML
<form [formGroup]="validateExampleForm">
<label>some date to be validated:</label>
<input type="date" formControlName="someDate"><br> Valid: {{validateExampleForm && validateExampleForm.controls.someDate.valid}}<br>
<button type="submit">Submit</button>
</form>
打字稿
ngOnInit() {
this.validateExampleForm = this.formBuilder.group({
someDate: [this.dateValue, (control) => this.validateIsDateInLastFiveDays(control)]
});
}
validateIsDateInLastFiveDays(control: FormControl): { [key: string]: boolean } {
let val = control.value;
let minDateValue: Date = new Date();
minDateValue.setDate(minDateValue.getDate() - 5);
if (!dates.inRange(new Date(val), minDateValue, this.today)) {
return { "someerrortype": true };
}
return null;
}
这里是完整的 plunker:
https://plnkr.co/edit/XT4YzCYPdD6lpBGlzpII?p=preview
NB dates
用于日期范围检查代码的对象来自
我正在 Angular2 中寻找日期时间选择器,- 我有一个使用 HTML5 的日期时间选择器,方法是将输入类型设置为日期,这很有效。 然而,它不符合我的要求,因为我需要根据今天的日期减去 5 天来设置 mindate,而 maxdate 是今天 - 运行时验证。所以不能真正硬编码 html.
中的值尝试使用 ngbDatepicker 但没有成功。
非常感谢任何建议。
下面是我尝试使用 ngbDatePicker 时的代码:-
App.module.shared.ts
import { Component, NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
@NgModule({
declarations:
[
AppComponent
],
imports:
[
CommonModule,
NgbModule.forRoot()
]
DateComponent.ts
export class DateComponent implements OnInit
{
public model : Date;
}
DateComponent.html
<form [formGroup]="myForm">
<div>
<div class="input-group">
<input class="form-control" placeholder="dd-mm-yyyy" name="dp"
[(ngModel)]="model" ngbDatepicker #d="ngbDatepicker" [ngModelOptions]="
{standalone: true}">
<div class="input-group-addon" (click)="d.toggle()" >
<i class="glyphicon glyphicon-calendar" aria-hidden="true"></i>
</div>
</div>
点击日历不显示日期时间选择器
这是一个相当主观的问题,因此您可能会得到基于意见的答复 - 包括这个。
就是说,您 不需要 为此使用第 3 方组件 - 虽然您当然可以 - 但快速 google 会揭示这些,所以我不会提到他们。
避免第 3 方选项,如果您使用的是模型驱动表单,您可以通过组合 HTML5 input type='date'
(如前所述)和自定义 angular 验证器。类似于以下内容:
HTML
<form [formGroup]="validateExampleForm">
<label>some date to be validated:</label>
<input type="date" formControlName="someDate"><br> Valid: {{validateExampleForm && validateExampleForm.controls.someDate.valid}}<br>
<button type="submit">Submit</button>
</form>
打字稿
ngOnInit() {
this.validateExampleForm = this.formBuilder.group({
someDate: [this.dateValue, (control) => this.validateIsDateInLastFiveDays(control)]
});
}
validateIsDateInLastFiveDays(control: FormControl): { [key: string]: boolean } {
let val = control.value;
let minDateValue: Date = new Date();
minDateValue.setDate(minDateValue.getDate() - 5);
if (!dates.inRange(new Date(val), minDateValue, this.today)) {
return { "someerrortype": true };
}
return null;
}
这里是完整的 plunker: https://plnkr.co/edit/XT4YzCYPdD6lpBGlzpII?p=preview
NB dates
用于日期范围检查代码的对象来自