如何动态地以角度形式动态更新输入文本字段的值?

时间:2019-01-24 10:02:59

标签: javascript angular angular-formly

我在成角度的4个项目中使用angular-formly。 工作的场景是我有用户列表,每个用户都有编辑和删除按钮。

当用户单击“编辑”按钮时,将显示一个模式,其中包含2个字段,一个是电子邮件地址,另一个是更改用户角色的模式。

我正在使用<formly-form>将表单呈现到模态上。

enter image description here

单击编辑按钮后,将打开此模式,我想在其中显示与单击的编辑按钮关联的电子邮件地址。

此外,我想保留该用户在下拉菜单中选择的角色。

这是formlyfieldconfig

{
        key: 'email',
        className: 'col-sm-4',
        type: 'input',
        defaultValue: '',
        templateOptions: {
            type: 'text',
            label: 'Email',
            disabled: true,
            placeholder: ''
        }
    },
    {
        key: 'role',
        className: 'col-sm-4',
        type: 'select',
        defaultValue: '',
        templateOptions: {
            label: 'Select Role',
            options: [],
            required: true
        }
    }

如您所见,以上对于电子邮件字段,我将defaultValue保留为null,而对于角色字段,我将defaultValue和选项保留为null。

当用户单击“编辑”按钮时,我正在动态设置defaultValue和options属性,该属性应反映在模式弹出窗口中。

private edituser(account):void {        
        this.updateModal.show();
        let userData = updateuserdata;

        this._PicklistApi.findById('5c45b9e06c0bbc57b5d43a66')
            .subscribe(picklist => {
                if(picklist && picklist['options'].length) {

                    _.find(userData,{'key': 'email'})
                        .defaultValue = account.email;

                    _.find(userData,{'key': 'role'})
                        .defaultValue = account.role;

                        _.find(userData,{'key': 'role'})
                        .templateOptions.options = [...picklist['options']];


                }
        });

        this.updateuserdata = userData;                      
    }

this._PicklistApi是一个服务对象,它将为我提供所有可用角色的列表。

updateuserdata将具有实际的表单字段配置,该配置将传递到HTML中的<formly-form>组件。

account参数是具有用户数据(包括电子邮件和角色)的用户对象。

当用户单击编辑按钮edituser()时,它会被调用,并使用可用角色正确设置选择选项。

但是,它没有同时为电子邮件和角色字段设置defaultValue。

我无法理解此行为,因为正确设置了选择选项,而没有同时为两个字段设置defaultValue。

如果我执行控制台日志,那么我会看到为两个字段都设置了defaultValue,为什么它没有反映在表单中。

0 个答案:

没有答案