从角度4的输入类型日期添加月份到目前为止

时间:2018-05-05 17:57:41

标签: javascript angular

我的表单中有两个输入字段:

#:kivy 1.10.0

<CustomLabel>:


<CustBoxLayout>:
    orientation: 'vertical'

    CustomLabel:
        id: header
        text: 'MyApp'
        font_size: 24
        padding_x: 16
        color: app.theme_cls.primary_color

    Button:
        text: 'Button Widget'
        font_size: 24
        padding_x: 16
        color: app.theme_cls.primary_color

我想要的是,用户填写合同签署时的日期,而不是他添加合同运行的月份。比起onBlur,当他离开<input type="date" [(ngModel)]="contractInception" name="contractInception"> <input type="text" [(ngModel)]="contractLength" (blur)="calculateContractEnd()" name="contractLength" maxlength="2" max="72"> 字段时,我想要contractInception Date +用户添加的月份。我需要在我的字段contractLength中使用该值。

因此,合同结束不是用户必须填写的,它可以通过他输入的信息计算,但我不知道如何。我在Stack或google上找到的所有东西都没有在角度4中工作。

这些是我的模特:

<input type="date" [(ngModel)]="contractEnd" name="contractEnd" disabled>

示例

用户输入20.04.2018到 contractLength: Number; contractInception: Date; contractEnd: Date; 和12到contractInception比我想要contractLength为20.04.2019

1 个答案:

答案 0 :(得分:1)

我花了一点时间才发现,但现在使用moment.js的解决方案看起来像这样:

calculateContractEnd() {
      let monthToAdd = this.contractLength.toString();
      let dateToCalc = moment(this.contractInception).add(monthToAdd, 'month'); 
      let newDate = dateToCalc.toDate(); 
      let newConvertedDate = newDate.toISOString() 
      let newOnlyDate = newConvertedDate.split('T')[0]; 
      this.contractEnd = newOnlyDate; 
  }

问题是获取一个值,该值可以从<input type="date">解析回值字段,但是使用该解决方案,它可以正常工作!