Угловой материал DatePicker установлен минимально программно - PullRequest
0 голосов
/ 22 февраля 2019

Я пытаюсь установить минимальное значение второго средства выбора даты, если я изменяю первое средство выбора даты, но я не могу сделать это:

Я получил эти два средства выбора даты

<mat-form-field>
        <span *ngIf="item.type=='date' && item.hijoDate">
            <input matInput [id]="item.key" [matDatepicker]="picker"
            [min]="minDatePadre" [max]="maxDatePadre"
            (dateChange)="seleccionaFecha($event, 'padre', item.hijoDate)" 
            readonly [placeholder]="item.label" [formControlName]="item.key">
              <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
              <mat-datepicker #picker></mat-datepicker>
            </span>
            <span *ngIf="item.type=='date' && item.padreDate">
              <input matInput [id]="item.key" [matDatepicker]="picker1"
              [min]="minDateHijo" [max]="maxDateHijo" 
              (dateChange)="seleccionaFecha($event, 'hijo', item.padreDate)"
              readonly [placeholder]="item.label" [formControlName]="item.key">
              <mat-datepicker-toggle matSuffix [for]="picker1"></mat-datepicker-toggle>
              <mat-datepicker #picker1></mat-datepicker>
            </span>
</mat-form-field>

В компоненте у меня есть следующее:

minDatePadre= new Date(2010, 1, 1);
maxDatePadre= new Date(2020, 0, 1);
minDateHijo= new Date(2010, 1, 1);
maxDateHijo= new Date(2020, 0, 1);

Я инициализирую значения, которые отлично работают, и показываю максимальное и минимальное значения в каждом указателе даты, но когда я пытаюсь изменить значения, это не работает здесь:

seleccionaFecha(event, tipo, elemento){


    if(tipo == 'padre'){
      let fechaHijo = this.form.controls[elemento].value;
      let fechaPadre = event.value;
      if(fechaPadre>fechaHijo){//SI LA FECHA INICIAL ES IGUAL 
        this.form.controls[elemento].setValue(fechaPadre);        
      }

      this.minDateHijo=new Date(2019, 1, 23);      
    }
    else if(tipo == 'hijo'){
      let fechaPadre = this.form.controls[elemento].value;
      let fechaHijo = event.value;


    }


  }

когда это соответствует условию, я изменяю значение

this.minDateHijo

, но ничего не меняется и не выдает никакой ошибки, я не знаю, как обновить это значение,пожалуйста, помогите, спасибо

ОБНОВЛЕНИЕ: Я вижу, что поведение min обновляется, но datepicker не обновляется, пока я не выберу какое-то значение в дочернем DatePicker, а затем обновится, мне нужночтобы найти способ обновить минимальное значение указателя даты на ходу.

ОБНОВЛЕНИЕ: это URL-адрес стекаблица с примером:

https://stackblitz.com/edit/angular-szjuq1

что я хочу, это выбрать первый datepickeи затем установите минимальную дату во втором устройстве выбора даты, но когда я выбираю первое средство выбора даты, оно только обновляет его, а не следующее, потому что я создаю его динамически, спасибо, если вы можете сказать мне какой-нибудь способ сделать это.

1 Ответ

0 голосов
/ 22 февраля 2019

Рассматривая исходный код, мы видим, что MatDatepickerInput не реализует хук жизненного цикла OnChanges, и что min @Input сопоставляется с геттером, который вызываетthis._validatorOnChange, но эта функция установлена ​​на () => {}.

Тогда наблюдаемое вами поведение является нормальным, этот элемент управления не предназначен для динамического изменения значения min.Я предлагаю вам открыть проблему на GitHub, если вы хотите добавить эту функцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...