patchValue 错误上的 Angular PrimeNG p-calendar 反应形式 位置 2 处的意外文字

Posted

技术标签:

【中文标题】patchValue 错误上的 Angular PrimeNG p-calendar 反应形式 位置 2 处的意外文字【英文标题】:Angular PrimeNG p-calendar reactive form on patchValue error Unexpected literal at position 2 【发布时间】:2022-01-21 12:02:21 【问题描述】:

在 Angular 13 应用程序中,使用 PrimeNG Calendar

<p-calendar [minDate]="today" [showIcon]="true" styleClass="form-control" showButtonBar="true"
                                dateFormat="dd/mm/yy" inputId="icon" placeholder="dd/mm/yy"
                                formControlName="eventStartDate"></p-calendar>

在反应式表单中使用,它在保存新表单时工作正常。我也用于编辑的表单相同。 编辑基于代码加载数据的表单。 但是当patchValue 到表单时,得到错误 ERROR 位置 2 的意外文字

编辑代码

loadEventToEdit() 
    this.eventService.getEventByCode(this.eventCode).subscribe((res) => 
      this.event = res;
      console.log('the event to update', this.event);

      this.theForm.patchValue(res);

文件路径值的其余部分工作正常。

【问题讨论】:

我看到日期格式不同,eventStartDate 你确定这是预期的吗? 嘿,Deepak,是的,它在 DB 中存储为 yy--mm-dd。另外,在 p-calendar 中,我将格式更改为 dateFormat="yy/mm/dd",但错误 【参考方案1】:

patchValue 之前将日期设置为新日期。

loadEventToEdit() 
    this.eventService.getEventByCode(this.eventCode).subscribe((res) => 
      this.event = res;
      console.log('the event to update', this.event);

      this.event.timing.eventStartDate = new Date(
        this.event.timing.eventStartDate
      );

      this.theForm.patchValue(this.event);

【讨论】:

【参考方案2】:

为您的资源提供完整的方式,其中资源必须修补。 对于 FormArray,您必须先制作 getter,然后您可以使用 Push 或 insert 方法来修补表单数组

 loadEventToEdit() 
        this.eventService.getEventByCode(this.eventCode).subscribe((res) => 
          this.event = res;
         this.theForm.controls['eventStartDate'].patchValue(this.event.timing.eventStartDate);
    )
    

【讨论】:

【参考方案3】:

我有类似的错误。 确保字段类型为日期,并在表单上的 patchValue 之前将其设置为新日期。

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

以上是关于patchValue 错误上的 Angular PrimeNG p-calendar 反应形式 位置 2 处的意外文字的主要内容,如果未能解决你的问题,请参考以下文章

Angular Reactive Forms,patchValue 不起作用,嵌套表单

如何在测试 Angular 2 反应形式中使用 setValue 和 patchValue

Angular 4 监听 setValue 或 patchValue 而不是使用 valueChanges

在 Angular 12 反应形式中使用 patchValue 绑定表单数组的最佳方法

patchValue with emitEvent: false, onlySelf: true 触发 Angular 中的 valueChanges

FormGroup.patchValue 保持子控件的禁用状态