我有这个动态表单控件

<f或m [f或mGroup]="dynamicF或mGroup" (ngSubmit)="onSubmit()" >

 <div class="row" f或mArrayName="address" *ngF或="let fields of AddressInfo.controls; let i = index">
            <ng-container [f或mGroupName]="i">
 <input type="number" class="f或m-control height-reset" placeholder="Enter Mobile" name="mobile" f或mControlName="mobile" />
..
</f或m>

当我try 改变字段的值时

this.dynamicF或mGroup.controls['mobile'].setValue('');

this.dynamicF或mGroup.patchValue({ mobile: '444' });

该值未更新

任何解决方案,谢谢

推荐答案

在你的情况下,AddressInfo是什么还不清楚.相反,请将您的代码更改为:

<div class="row" formArrayName="address" *ngFor="let fields of addressFormArray.controls; let i = index">
  <ng-container [formGroupName]="i">
    <input type="number" class="form-control height-reset" placeholder="Enter Mobile" name="mobile" formControlName="mobile">
  </ng-container>
</div>
get addressFormArray() {
  return this.formMain.get('address') as FormArray;
}

用户现在可以添加一个值.

如果您计划以编程方式编辑该值,则this.dynamicFormGroup.controls['mobile'].setValue('');将不起作用,因为mobile是Form数组中的FormControl.然后,要么遍历该数组以更改所有值,要么必须明确应该更改哪个值.

Update

根据你的 comments ,我假设你的目标是改变移动端的值,如果它以0开始(如果不是,请更新你的问题).

<div class="row" formArrayName="address" *ngFor="let fields of addressFormArray.controls; let i = index">
  <ng-container [formGroupName]="i">
    <input (input)="updateMobile(i)" class="form-control height-reset" placeholder="Enter Mobile" name="mobile" formControlName="mobile">
  </ng-container>
</div>
updateMobile(index: number) {
  const formArray = this.formMain.get('address') as FormArray;
  const mobileControl = formArray.at(index).get('mobile') as FormControl;
  const value = mobileControl.value;
  if (value.startsWith('0')) {
    const modifiedValue = '+1' + value.substring(1);
    mobileControl.setValue(modifiedValue);
  }
}

因此,如果值为0123456789,它将被替换为+1123456789(您可以将+1替换为您想要的任何值).如果您想保留+,请确保您已删除type="number"或将其替换为type="tel".

如果您的目标是只更改第一个移动字段的值,则可以使用

this.addressFormArray.at(0).get('mobile')?.patchValue("My Value");

Angular相关问答推荐

导致无限请求的Angular HttpInterceptor和HttpClientModule

如何在HTML外部项目中使用Web组件(以17角创建)

如何用ANGLE指令覆盖Html元素的数据绑定属性

声明Angular material 中按钮的自定义 colored颜色

Angular 环境本地无文件替换

如何使用带有17角的Swiper 11.0.5元素

在Cypress中,对xlsx文件的读取并不总是正确的

如果我只在组件中使用某个主题,是否需要取消订阅该主题?

Angular-每2个流式传输多个HTTP调用

如何将 Angular 中的导航路由到同一页面并重新加载

从 applescript 调用Angular 前端以从列表中 Select 一个项目

使用 Observable 进行渐进式填充

Angular JWT Token 被添加到lazyUpdate 而不是 HttpHeaders 中的标头

如何重新加载当前页面?

将环境变量传递给Angular 库

Angular/RxJS 6:如何防止重复的 HTTP 请求?

在同一个组件中使用 MatSort 的多个 mat-table

*ngIf 带有多个异步管道变量

如何防止角material垫菜单关闭?

'Observable' 类型上不存在属性 'filter'