【问题标题】:Angular 2 submit dynamic componentAngular 2提交动态组件
【发布时间】:2018-10-11 21:56:36
【问题描述】:

我正在从来自服务器的 json 开始创建动态组件。 为此,我使用了官方指南中的示例 https://angular.io/guide/dynamic-component-loader

loadComponent(requiredFields) {
    let bankInput : InputItem;
    let bankItem = requiredFields[0];
    if (bankItem.nature == "text"){
        bankInput = new InputItem(InputTextComponent,bankItem);

    }


    let componentFactory = this.componentFactoryResolver.resolveComponentFactory(bankInput.component);

    let viewContainerRef = this.inputHost.viewContainerRef;
    viewContainerRef.clear();

    let componentRef = viewContainerRef.createComponent(componentFactory);
    (<InputBankComponent>componentRef.instance).data = bankInput.data;


  }

显然这是一个只支持文本的 sn-p。

一切正常,但现在我必须将生成的字段提交到服务器。

如何将生成的字段放入表单中? 有什么更好的方法?

【问题讨论】:

    标签: angular


    【解决方案1】:

    你查看过关于forms 的官方文档吗?

    您还可以阅读FormBuilder 来动态构建表单,这是一个示例(使用现有的验证器):

    this.form = this.fb.group({
    
       Address1: [address.Address1, this.validator.buildAddressValidators()],
       Address2: [address.Address2, this.validator.buildAddressValidators()],
       Address3: [address.Address3, this.validator.buildAddressValidators()],
       Address4: [address.Address4, this.validator.buildAddressValidators()],
    
       ZipCode: [address.ZipCode, this.validator.buildZipCodeValidators(true)],
       City: [address.City, this.validator.buildCityValidators(true)]
    });
    

    【讨论】:

    • 是的,但我坚持下去。我无法理解如何动态地将组件添加到表单组。我不断收到错误 ormControlName must be used with a parent formGroup 指令。您需要添加一个 formGroup 指令并将现有的 FormGroup 实例传递给它(您可以在您的类中创建一个)。
    • 谢谢,但我的情况有点不同,因为输入是在单击按钮时创建的,所以我无法使用 formbuilder。基本上我有一个按钮,点击读取一个带有要添加的字段描述的json,我必须渲染它们。使用 viewcontainerref,我可以添加输入,但我不明白如何在表单中插入创建的组件以验证和提交。希望现在更清楚...
    猜你喜欢
    • 2016-11-19
    • 1970-01-01
    • 2017-08-26
    • 2017-08-16
    • 1970-01-01
    • 2017-04-05
    • 2017-05-10
    • 2017-07-07
    • 2017-10-18
    相关资源
    最近更新 更多