Попытка получить входное значение ngbdatepicker

Я новичок в Angular 4, и я пытаюсь реализовать загрузчик ngbdatepicker на веб-сайте.

Вот мой HTML-код:

<div class="input-group ">
    <input id="datepicker" class="form-control col-7" placeholder="{{dateWording}}" ngbDatepicker #date="ngbDatepicker" required pattern="[0-9]{4}[-][0-9]{2}[-][0-9]{2}">
    <div class="input-group-append">
        <button class="btn btn-outline-secondary picto-calender" (click)="date.toggle()" type="button"></button>
    </div>
</div>

Я пытался использовать события как (щелчки) или (размытие) для доступа к своему входному значению с помощью getDate(#date.value), но ничего не работало должным образом. Вот мой метод getDate, который возвращает неопределенное значение в консоли браузера.

getDate(date: any) {
    this.date = date;
    console.log(this.date);
}

Итак, мои два вопроса:

  • Как я могу получить ценность моего ввода, чтобы сохранить его в моем.ts
  • Какую функцию я могу использовать, чтобы определить, что я выбираю дату в меню выбора даты и сохраняю значение при закрытии меню

Надеюсь, вы поможете мне и извините за мой плохой английский!

4 ответа

Вы можете использовать (ngModelChange), чтобы получить значение даты. Я изменил ваш код, проверьте это

<div class="input-group ">
    <input id="datepicker" class="form-control col-7" [(ngModel)]="model" 
     placeholder="" ngbDatepicker #date="ngbDatepicker" required 
  (ngModelChange)="select(model)" pattern="[0-9]{4}[-][0-9]{2}[-][0-9]{2}">
   <div class="input-group-append">
       <button class="btn btn-outline-secondary picto-calender" 
  (click)="date.toggle()" type="button"></button>
     </div>

и ваш component.ts должен понравиться

   select(model){  
      console.log(model);
    }

Рабочий пример:

https://stackblitz.com/edit/angular-xnv11x?file=app/datepicker-popup.ts

Ты можешь использовать ngModel сохранить выбранную дату в объекте типа NgbDateStruct, он содержит три свойства month,year and day, Тогда вы можете создать Date объект от этого. В этом примере я устанавливаю значение выбранной даты в dateSelect событие DatePicker, также значение устанавливается в объекте, объявленном как ngModel,

HTML

<div class="input-group ">
    <input id="datepicker" class="form-control col-7" placeholder="{{dateWording}}" ngbDatepicker #date="ngbDatepicker" required pattern="[0-9]{4}[-][0-9]{2}[-][0-9]{2}" [(ngModel)]="currentDateObj" name="date" (dateSelect) = "onSelect($event)">
    <div class="input-group-append">
        <button class="btn btn-outline-secondary picto-calender" (click)="date.toggle()" type="button"></button>
    </div>
</div> 

код файла ts

import {Component} from '@angular/core';

@Component({
  selector: 'ngbd-datepicker-popup',
  templateUrl: './datepicker-popup.html'
})
export class NgbdDatepickerPopup {
  public model:any = {};
  public selectedDate:Date;
  public dateWording:string = "yyyy-mm-dd";
  public currentDateObj:any = {};
  onSelect(evt:any){
    this.selectedDate = new Date(evt.year,evt.month-1,evt.day);
    console.log(this.selectedDate);
  }


}

Рабочая демонстрация: https://stackblitz.com/edit/angular-sskm4x

Используйте (ngModelChange) для получения значения средства выбора даты.

      <input  id="datepicker"
        [(ngModel)]="model" 
        ngbDatepicker
        #date="ngbDatepicker"
        (ngModelChange)="selectDateFunc(model)"
        pattern="[0-9]{4}[-][0-9]{2}[-][0-9]{2}"
        required />

<button (click)="date.toggle()"
    type="button"></button>

добавьте эту функцию в component.ts

             selectDateFunc( selectedDate ){  
          console.log( selectedDate );
       }

Вы можете использовать ngx-mydatepicker, введите ссылку здесь

В my.component.html добавьте текст ниже

<div class="input-group">
                <input class="form-control" required (click)="dp1.toggleCalendar()" #startDateTime style="float:none" placeholder="Select a date" ngx-mydatepicker name="mydate"
                    [options]="myOptions1" #dp1="ngx-mydatepicker" (dateChanged)="onStartDateChanged($event)" required/>

                <span class="input-group-btn">
                    <button type="button" class="btn btn-default my-picker" (click)="dp1.clearDate()">
                        <i class="glyphicon glyphicon-remove"></i>
                    </button>
                    <button type="button" class="btn btn-default my-picker" (click)="dp1.toggleCalendar()">
                        <i class="glyphicon glyphicon-calendar"></i>
                    </button>
                </span>
            </div>

В my.component.ts добавьте функцию ниже

onStartDateChanged(e){
// var dd = e.jsdate.setDate(e.jsdate.getDate() - 1);
var ddd = { year: e.jsdate.getFullYear(), month: e.jsdate.getMonth() + 1, day: e.jsdate.getDate()-1}
this.startDate = e.jsdate;
this.myOptions2 = {
  dateFormat: 'dd.mm.yyyy',
  markCurrentDay: true,
  showTodayBtn: true,
  disableUntil: ddd
};
}

При изменении даты вызывается функция onStartDateChanged().

Другие вопросы по тегам