Angular ngbDatepicker设置值

Angular ngbDatepicker设置值,angular,angular6,ngb-datepicker,angular-template-form,Angular,Angular6,Ngb Datepicker,Angular Template Form,在我的角度应用程序模板驱动表单中,我有一个出生日期字段,并为该字段添加了ngbDatepicker,如下所示 <input #dob="ngbDatepicker" (click)="dob.toggle()" [(ngModel)]="model.dob" [ngClass]="{ 'is-invalid': f.submitted && dob.invalid }"

在我的角度应用程序模板驱动表单中,我有一个出生日期字段,并为该字段添加了ngbDatepicker,如下所示

<input #dob="ngbDatepicker"
                 (click)="dob.toggle()"
                 [(ngModel)]="model.dob"
                 [ngClass]="{ 'is-invalid': f.submitted &&  dob.invalid }"
                 class="form-control"
                 id="dob"
                 name="dob"
                 required
                 type="text"
                 [disabled]="isDisabled"
                 [class.ash]="isDisabled"
                 [class.highlight]="!isDisabled"
                 ngbDatepicker
          />
因为ngbDatepicker以该格式获取值。这就是我试图转换出生日期的原因

toDate(dob) {
 const [year, month, day] = dob.split('-');
 const obj = { year: year, month: month, day: day.split(' ')[0].trim() };
 console.log('convert date', obj);
 this.model.dob = obj;
 //  this.model.dob ={year: 2017, month: 5, day: 13};
}
输出是
{year:“2019”,month:“02”,day:“16”}
,我想从这个输出中删除引号。我尝试了很多方法,但都无法获得所需的输出。 我可以使用下面的代码得到
{“年”:2019,“月”:02,“日”:16}
这个输出

JSON.stringify({ "year": "2019", "month": "2", "day": "26" }, (key, value) => !isNaN(+value) ? +value : value);

但要设置日期,我需要像这样设置对象<代码>{年份:2019,月份:2,日期:26}

我可以使用“parseInt”解决我的问题。使用此项了解有关parseInt的更多信息。我更改了下面给出的代码

toDate(dob) {
if (dob) {
  const [year, month, day] = dob.split('-');
  const obj = { year: parseInt(year), month: parseInt(month), day: 
    parseInt(day.split(' ')[0].trim()) };
  this.model.dob = obj;
  }
}

你可以这样写


[startDate]=“{year:From API dob.getYear(),month:From API dob.getMonth()}”

我这样做解决了我的问题

通过创建NgbDate实例

date = new NgbDate(2020,19,02);

将此日期作为ngModel

通过添加以下import语句,您可以获得NgbDatePicker输入,以从/到[(ngModel)]=“model.dob”读取/写入Angular 9中的Javascript日期:

import { NgbDate, NgbDateStruct, NgbDateAdapter, NgbDateNativeAdapter } from '@ng-bootstrap/ng-bootstrap';
providers: [
    { provide: NgbDateAdapter, useClass: NgbDateNativeAdapter }]
并在@Component语句中声明NgbDateAdapter提供程序:

import { NgbDate, NgbDateStruct, NgbDateAdapter, NgbDateNativeAdapter } from '@ng-bootstrap/ng-bootstrap';
providers: [
    { provide: NgbDateAdapter, useClass: NgbDateNativeAdapter }]

我尝试用
{year:2020,month:10,day:30}
格式设置值,它对我有效。 请注意日期的值,如果该月不存在该日期,则该值将不会显示给NgbDateAdapter选择器。
我遵循

中的解决方案,由于一些原因,我无法使用此解决方案。当我从API中获得一天时,它附带了空间和00:00:00。同样,我也需要输入字段。是的,它工作正常,返回一个对象,每个部分都有日期。