【问题标题】:Changing Date Based From Value in Dropdown in Angular 4从Angular 4下拉列表中的值更改基于日期
【发布时间】:2018-03-02 06:59:16
【问题描述】:

我有这个付款条款,它是一个下拉菜单。该付款期限具有价值。所以我需要从当前日期添加这些值,以便我可以显示它。下面是我的代码。

this.addForm = this.fb.group({
      payment_term: new FormControl(null, Validators.required),
      due_date: new FormControl(null, Validators.required),
});



onSelectPaymentTerm(event){
    console.log(event)
    this.addForm.patchValue({
      due_date: this.date.setDate( this.date.getDate() + event)
    })
  }

HTML

<div class="form-group row">
    <label class="col-sm-3 col-form-label">Payment Term</label>
    <div class="col-sm-9">
        <select type="text" class="form-control" formControlName="payment_term" (ngModelChange)="onSelectPaymentTerm($event)">
            <option value="null" hidden>-- Select Payment Term --</option>
            <option *ngFor="let payment of payments" [value]="payment?.value">{{ payment?.name }}</option>
        </select>
    </div>
</div>

<div class="form-group row">
    <label class="col-sm-4 col-form-label">Due Date</label>
    <div class="col-sm-8">
        <input type="text" class="form-control" formControlName="due_date" readonly>
    </div>
</div>

【问题讨论】:

  • 那么您面临的问题是什么?
  • @AbhijitKar。我无法根据付款期限值下拉菜单设置日期?我猜我的代码有问题。

标签: angular angular-reactive-forms angular4-forms


【解决方案1】:

看看下面的 - 使用 Vanilla JS

Demo

更简洁的方法 - 使用 moment.js

Demo

解决方案

  1. 彻底使用响应式表单
  2. 无需使用(ngModelChange)="onSelectPaymentTerm($event)"。但这不是问题
  3. 所选值以字符串形式出现,因此在添加到日期之前必须使用 parseInt 转换为整数
  4. 更喜欢 Moment.js 在 Javascript 中进行日期操作

【讨论】:

  • 我分叉了你的链接。我的意思是如果值为 90,那么它将从现在开始增加 90 天,如果选择 50,它将从现在开始增加 50 天。这是链接stackblitz.com/edit/…
  • @Joseph 我已根据您的要求更新了 StackBlitz 演示!
  • 谢谢。例如,您可以将日期编辑为此。 “2018 年 4 月 21 日星期六”
  • @Joseph,当然,我已经对演示进行了更改,看看!
  • 这个链接对吗? stackblitz.com/edit/…。我仍然可以看到时间和 GMT +...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-14
  • 1970-01-01
相关资源
最近更新 更多