簡體   English   中英

使用ngModelChange時,當用戶第一次使用日期選擇器選擇日期時,它不會更改日期

[英]using ngModelChange it does not change date when user selects the date first time using date picker

我正在使用兩個日期選擇器From date和To date,實際上我想要的是當用戶選擇一個日期(From date picker)並且該日期大於然后(To date picker)的值時,它應該分配(From date)選擇器)的值也設置為(日期選擇器),反之亦然。

我正在使用以下代碼,但無法正常工作

組件文件

if (callFrom == 'from' && claimCharge.Dos_From) {
  if (this.getLengthOfYear(claimCharge.Dos_To)) {
    if (this.checkIfTodayDate(claimCharge.Dos_To)) {
      if (this.getLengthOfDate(claimCharge.Dos_From)) {
        .Dos_To = claimCharge.Dos_From;
      }
    }
  }
}


if (callFrom == 'from' && claimCharge.Dos_From) {
  if (claimCharge.Dos_From >= claimCharge.Dos_To) {
    if (this.getLengthOfYear(claimCharge.Dos_From)) {
      if (claimCharge.Dos_To.toString() != new Date(new Date().setHours(0, 0, 0, 0)).toString() as any) {
        claimCharge.Dos_To = claimCharge.Dos_From;
      }
    }
  }
} 

HTML:

<datetime  [attr.id]="'txtProcedureDOSTo_'+ndx" [timepicker]="false" [datepicker]="datepickerOpts" (ngModelChange)="methodFromAndToCheck(p,'to')" [(ngModel)]="p.Dos_To" ></datetime>
<datetime  [attr.id]="'txtProcedureDOSFrom_'+ndx" [timepicker]="false" [datepicker]="datepickerOpts" (ngModelChange)="methodFromAndToCheck(p,'from')" [(ngModel)]="p.Dos_From"></datetime>

希望我正確理解了您,這是我的解決方案:

HTML:

 <input placeholder="From" [(ngModel)]="from" type="date" (change)="onChange('from')">

 <input placeholder="To" [(ngModel)]="to" type="date" (change)="onChange('to')">

TS組件:

import {Component, OnInit} from '@angular/core'

@Component({
  selector: 'date',
  templateUrl: './date.component.html',
  styleUrls: ['./date.component.css']
})
export class DateComponent implements OnInit {
  from: string;
  to: string;

  ngOnInit(){
    // get current date to set the starting values for inputs
    // d is a type of Date()

    let d = new Date();

    // d.toISOString() returns date in format YYYY-MM-DDTHH:mm:ss.sssZ
    // since input of "date" type uses YYYY-MM-DD format
    // we take first 10 characters with .slice(0,10)

    this.from = d.toISOString().slice(0,10);
    this.to = d.toISOString().slice(0,10);
  }

  onChange(input: string){
    if (input === 'from') {
      // if Date from input "to" is less than from input "from"
      // value of the input "to" is equal to value of the input "from"

      this.to = new Date(this.to) < new Date(this.from) ? this.to = this.from : this.to;

    } else {

      // if Date from input "to" is less than from input "from"
      // value of the input "from" is equal to value of the input "to"

      this.from = new Date(this.to) < new Date(this.from) ? this.from = this.to : this.from;

    }
  }
}

讓我知道它是否對您也有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM