为了账号安全,请及时绑定邮箱和手机立即绑定

动态表单中自定义表单组件上的 ControlValueAccessor

动态表单中自定义表单组件上的 ControlValueAccessor

呼如林 2021-11-12 17:19:31
我根据本教程实现了一个动态表单。我想向动态表单添加简单的文本输入和自定义组件(Mapbox GL JS)。我的问题是我无法访问 Mapbox 数据。Mapbox 组件实现了 ControlValueAccessor 但我不知道如何将信息传递给表单。我创建了一个 StackBlitz,您可以在其中找到我的设置:https ://stackblitz.com/edit/angular-xrkftm我的目标是在表单下方显示表单信息(文本输入和 Mapbox 标记位置)。我不知道在哪里添加[formControlName]="config.name"。目前它在map.component.ts但我想它需要在父组件上实现。
查看完整描述

1 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

加载时有几个错误:我可以修复其中一些错误。在 DynamicFormComponent 中,您应该使用您的配置来创建所有控件:


 createGroup() {

    const group = this.fb.group({});

    this.config.forEach(control => {

      group.addControl(control.name, this.createControl(control))

    });

    return group;

  }

MapComponent:您应该将结果写回表单


 _onChange = (geometry: any) => {

     ... 

     this.group.patchValue({[this.config.name]: this.geometry});

 }

但是仍然存在一些错误,请检查控制台。如果将 map.component.html 更改为:


<div>

    <label>{{ config.label }}</label>

    <div #map class="map"></div>

</div>

所有错误都消失了,因为它不是有效的角度值访问器。


查看完整回答
反对 回复 2021-11-12
  • 1 回答
  • 0 关注
  • 108 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信