2

我在我的角度应用程序中使用 ng2-datepicker,我想从打字稿文件中更新日期。

在 html 模板中:

<ng2-datepicker [options]="optionsForMenuDate" [(ngModel)]="selectedDate" name="selectedDate"></ng2-datepicker>

它绑定到一个矩对象,所以我试图像这样更新它(我在角度解决方案中包含了矩):

this.selectedDate = this.moment(date);

我要将日期设置为的 js Date 对象的日期在哪里。这只是将组件设置为 null,即使 this.selectedDate 也不为 null。

console.log(this.selectedDate); // logs a moment object

关于如何实现这一目标的任何想法?

4

2 回答 2

1

我遇到了同样的问题,我通过以下方式让它工作。

您的代码的问题在下面一行,

[(ngModel)]="selectedDate"

在这里,属性“selectedDate”应该是“DateModel”类型,而不是时刻对象。DateModel 定义在,

import {DateModel} from "ng2-datepicker";

它具有以下性质,

export declare class DateModel {
    day: string;
    month: string;
    year: string;
    formatted: string;
    momentObj: moment.Moment;
    constructor(obj?: IDateModel);
}

现在您需要设置momentObj格式化属性以使其正常工作。

这是示例代码,

let dateModel:DateModel = new DateModel();
let momentObj = moment('05-11-1986', "MM-DD-YYYY");
dateModel.momentObj = momentObj;
dateModel.formatted = momentObj.format();
this.selectedDate = dateModel;
于 2017-06-06T18:01:01.797 回答
0

您可以使用setStartDate进行更新, test.ts 文件看起来像这样

import { Component, ViewChild, OnInit, ElementRef } from '@angular/core';
import { DaterangePickerComponent } from 'ng2-daterangepicker';

@Component({
  selector: 'test',
  templateUrl: './test.html',
  styleUrls: ['./test.css']
})
export class TestComponent implements OnInit {

 // @ViewChild(DaterangePickerComponent) this line is very important
  @ViewChild(DaterangePickerComponent)
  private picker: DaterangePickerComponent;

  constructor() { }

  ngOnInit() {}

  ngAfterViewInit(){

    // get previous day for start date
    let startDate = new Date();
    startDate.setDate(startDate.getDate() - 1);

    // get next day for start date
    let endDate = new Date();
    endDate.setDate(endDate.getDate() + 1);

    this.picker.datePicker.setStartDate(startDate);
    this.picker.datePicker.setEndDate(endDate);

  }

}

和 html 看起来像这样

<input type="text" class="form-control form-control2"  name="daterangeInput" daterangepicker [options]="options" />
于 2018-10-29T12:27:16.383 回答