ng-bootstrap DatePicker在触发器Angular 4上设置startDate和minDate

时间:2017-10-27 15:20:53

标签: angular datepicker angular2-template

所以,我使用ng-bootstrap DatePicker,并有两种形式,startDate和endDate 我需要做两件事:

  • 渲染"创建页面"把今天的日期放在startDate上,如果渲染"编辑页面",则从后端放置日期..
  • 选择startDate时,触发minDate属性为选定的startDate

以下是我尝试做的事情(现在使用硬编码,而不是从后端获取数据)

from mpl_toolkits.axes_grid1 import host_subplot
import mpl_toolkits.axisartist as AA
import matplotlib.pyplot as plt

host = host_subplot(111, axes_class=AA.Axes)

par1 = host.twinx()

new_fixed_axis = par1.get_grid_helper().new_fixed_axis

host.set_xlim(0, 2)
host.set_ylim(0, 2)

host.set_xlabel("Distance")
host.set_ylabel("Density")
par1.set_ylabel("Volume")

par1.axis['right'].toggle(all = True)

host.plot([0, 1, 2], [0, 1, 2])
par1.plot([0, 1, 2], [2, 4, 3])

plt.show()

另外,如果有人知道怎么做,我希望日历的弹出显示位于页面顶部的方向,而不是底部...没有找到任何属性来设置这个

1 个答案:

答案 0 :(得分:2)

您可以在没有属性minDate的情况下执行此操作,但如果需要,可以执行以下操作。我已经引入了一个新变量dataToBeUsed(名称相应)作为我们使用的变量,因此在此示例中考虑与您的代码相比较。

首先,您要检查这是Create还是其他'。我更喜欢在OnInit而不是构造函数中做初始的事情。您提到如果viewType不是'Create',那么您将从后端获取数据,所以......

ngOnInit() {
  if (this.programInput['viewType'] === 'Create') {
    // remember objects are mutable
    this.dataToBeUsed = this.programInput;
    this.dataToBeUsed.startDate = {year: new Date().getFullYear(), month: new Date().getMonth() + 1, day: new Date().getDate()};
  } else {
    this.getData()
      .subscribe(data => {
        this.dataToBeUsed = data;
      })
  }    
}

您希望在开始日期更改时更改minDate。因此,让我们使用ngModelChange(其余省略)

<input (ngModelChange)="setMinDate($event)" [(ngModel)]="dataToBeUsed.startDate">

setMinDate方法:

setMinDate(event) {
  this.dataToBeUsed.minDate = event;
}

从您的代码中,我删除了变量

startDate, endDate, minEndDate

因为我认为没有用。我们可以在dataToBeUsed对象中引用相同的属性。

因此,对于第二个日期选择器,您要禁用开始日期之前的日期,我们将其标记为:

[minDate]="dataToBeUsed.minDate"

以下是您的参考资料:http://plnkr.co/edit/zfGUrMJkJzQXTBJ86OSs?p=preview