meta données pour cette page
  •  

Cas particulier des dates

HTML

<dx-date-box stylingMode="outlined" labelMode="static" label="Date de naissance" [(value)]="personne.dateNaissance" 
  [max]="today" displayFormat="dd/MM/yyyy" [useMaskBehavior]="true" [showClearButton]="true" [readOnly]="!this.DG.isDroitsFichierEdition()"
  [style.background-color]="BC.mRGPD('personne','dateNaissance').couleur" (onValueChanged)="handlePersonneChanged()">
    <dx-validator validationGroup="infoPersonne" name="Date de naissance">
      <dxi-validation-rule type="range" [max]="today" [min]="minDateNaissance" message="'La date doit être après ' + (minDateNaissance | date:'yyyy')"/>
  </dx-validator>
</dx-date-box>

TS

  // Bornes de validation de la date de naissance
  public today: Date = new Date();
  public minDateNaissance: Date = new Date();
  
  // Message dynamique pour le validateur
  public rangeMessage: string = "";

  ngOnInit(): void {
    this.initValidationDates();
  }


  /**
   * Initialise les bornes de temps pour le dx-date-box
   */
  private initValidationDates() {
    // 1. On fixe AUJOURD'HUI à la fin de la journée (23:59:59)
    // Cela évite que la date du jour soit considérée comme "dans le futur"
    this.today = new Date();
    this.today.setHours(23, 59, 59, 999);

    // 2. On calcule MINIMUM (Aujourd'hui - 120 ans)
    this.minDateNaissance = new Date();
    this.minDateNaissance.setFullYear(this.today.getFullYear() - 120);
    this.minDateNaissance.setHours(0, 0, 0, 0);

    // 3. On prépare le message d'erreur
    this.rangeMessage = `La date doit être comprise entre ${this.minDateNaissance.getFullYear()} et aujourd'hui.`;
  }