【问题标题】:How to concatenate 3 inputs in angular?如何以角度连接3个输入?
【发布时间】:2021-11-05 03:22:48
【问题描述】:

我需要连接 3 个输入,并在角度打字稿中创建一个代表日期的值。

这是我的 html 代码:

  <td>
                      <input type="text"  placeholder="jj" class="form-control" formControlName="jj" id="jj" name="jj" [hidden]="!chkEnable.checked" style="width:50%" />
                    </td>
                    <td>
                      <input type="text" placeholder="mm" class="form-control" formControlName="mm" id="mm"  name="mm" style="width: 50%"  [hidden]="!chkEnable.checked">
                    </td>
                    <td>
                      <input type="text" placeholder="aa" class="form-control" formControlName="aa" id="aa" name="aa" style="width: 50%"  [hidden]="!chkEnable.checked">
                    </td> 

我的表单组:

this.dateForm = this.formBuilder.group({
  jj: ['', Validators.required,Validators.max(2)],
  mm: ['', Validators.required],
  aa: ['', Validators.required]

});

提前致谢!

【问题讨论】:

  • 分享你的FormGroup代码
  • @NavnathJadhav 完成
  • 只是一个想法。为什么不使用日期选择器?这似乎是不必要的乏味。
  • @navnath 我能收到你的电子邮件吗!我被困在角度我想在数据库示例(1,2,3...)的一列中存储多个 id 这样做很热! ——
  • 嘿,您可以在 stackoverflow 上添加您遇到的错误的问题。

标签: html angular typescript date


【解决方案1】:

监听表单组值的变化。每次任何控制值更改时都会触发。您可以在此执行任何您想要的操作。

ngOnInit() {
  this.dateSubscription = this.dateForm.valueChanges
  .pipe(map(this.formatDate))
  .subscribe(d => console.log('MM/DD/YY', d));
}

销毁时取消订阅

ngOnDestroy() {
  this.dateSubscription.unsubscribe();
}

格式化日期方法

formatDate({ aa, jj, mm }: any): string {
  return new Date(jj + '/' + +mm + '/' + +aa).toLocaleString();
}

提交表单

<form [formGroup]="dateForm" (ngSubmit)="onSubmit()">

在 Ts 中,

onSubmit(): void {
    // all form data
    const fromData = this.dateForm.getRawValue();
    // generate date out of it
    const date = this.formatDate(fromData);
    // create request by adding formdata with date
    const request = { ...fromData, date };
    console.log(request);
    // API call or other operation
  }

将此 js 日期作为字符串传递给 laravel,并在 laravel 中将其转换为日期。 像这样的东西……

$jsDate = '11/12/2021, 12:00:00 AM';
echo date('Y-m-d', strtotime($jsDate));

// 或

$date=date_create("12/25/2021, 12:00:00 AM");
echo date_format($date,"Y/m/d H:i:s");

Demo

【讨论】:

  • 谢谢!为什么我得到“19**”而不是“20**” Sat May 01 1920 00:00:00 GMT+0100 (UTC+01:00)
  • 你想要Date对象格式还是用户输入
  • 用户已输入,我将使用日期时间类型将其插入我的数据库中。
  • 好的。立即查看演示。我已更改.pipe(map(({ aa, jj, mm }) =&gt; jj + '/' + mm + '/' + aa)) 您可以根据需要在这里格式化
  • 我猜用户输入后我无法将其插入日期类型的数据库中!那么如何修复 Date 对象中的 19** !我得到了这个 (1920-03-20 T23:00:00.000Z)
猜你喜欢
  • 2021-10-21
  • 1970-01-01
  • 2020-03-14
  • 1970-01-01
  • 2016-07-20
  • 2019-03-18
  • 1970-01-01
  • 1970-01-01
  • 2017-10-28
相关资源
最近更新 更多