在nxg-bootstrap datepicker中设置可见日期

时间:2019-06-11 12:03:50

标签: angular datepicker angular-ui-bootstrap

我正在使用Angular 7.2.15和ngx-bootstrap 4.1.1。 我想为日期选择器设置最小日期和最大日期。输入字段还具有一个占位符,用于向用户显示日期格式,此处最初不应该设置日期,因此用户必须选择一个日期。

这个想法是,我们已经知道用户的年龄,因此我们希望将日期选择器限制为他/她的出生年月。

我遇到的问题是,当打开日期选择器时,它显示年份(最大日期)的12月。我想在datpicker中设置选定的日期/星期/月份,以避免显示12月。是否可以在日期选择器中设置日期,而不会影响输入字段的值?

HTML

<input type="text" placeholder="{{'DateFormat' | translate}}" class="form-control" id="birthdate" formControlName="birthdate"
[ngClass]="{ 'is-invalid': submitted && f.birthdate.errors }" bsDatepicker 
#dp="bsDatepicker" triggers=""   
               [bsConfig]="{ dateInputFormat: 'DD/MM/YYYY', showWeekNumbers: 
false, maxDate: maxdate, minDate: mindate}"                                      
                [maxDate]="maxdate" [minDate]="mindate" placement="right">

组件

...
if (this.age) {
        this.mindate = new Date();
        this.mindate.setFullYear(this.mindate.getFullYear() - this.age, 0, 1);
        this.maxdate = new Date();
        this.maxdate.setFullYear(this.maxdate.getFullYear() - this.age, 11, 31);
        this.selectedDate = this.mindate;
    }
...

    this.form = this.formBuilder.group({           
        birthdate: ['', [Validators.required, DateValidators.validateDateRange(this.mindate, this.maxdate)]],          
    });

...

validateDateRange是一个自定义方法,用于检查所选日期是否有效以及在提示日期和maxdate之间

1 个答案:

答案 0 :(得分:0)

在component.ts

minRange:Date[];

  ngOnInit() {

    this.mindate = new Date(2019 - this.age, 0, 1);
    this.maxdate = new Date(2019 - this.age, 11, 31);

    this.minRange = [this.mindate, this.maxdate];
  }

在HTML中,添加[(ngModel)]后,它对我有用

<input
    [className]="class"
    [id]="id"
    [name]="name"
    [value]="val"
    type="text"
    (input)="onChange($event.target.value)"
    (blur)="onTouched()"
    bsDaterangepicker
    triggers="keydown click"
    [formControl]="control"
    [(ngModel)]="minRange"
    [bsConfig]="{ containerClass : 'theme-default', rangeInputFormat: 'MMM DD, YYYY', maxDate: maxdate, minDate: mindate}"
  >