angular 4 在表单验证时,如果触发错误验证,有时排版顺序会被打乱 解决办法

原因:

这个问题是因为在显示错误提示信息时,使用了*ngIf来控制提示信息的显示。由于*ngIf不占用空间,页面生成时没有给错误提示提供显示的空间,当错误提示被触发显示之后,挤占之前的元素需要的空间,排版就会被打乱。

解决办法:

使用[ngStyle]="{'visibility': 条件判断语句? 'visible':'hidden'}"来控制错误提示信息的显示。因为 visibility 会一直占据自己的空间,当条件判断语句结果为true时,visibility 的值为visible,条件语句显示;条件为false时,值为hidden,条件语句不显示。

 

代码实例:

html :

<div [ngStyle]="{'visibility':isRequired(ctrl)? 'visible':'hidden'}">
        <span [ngStyle]="{'visibility': formGroup.get(ctrl).invalid && formGroup.get(ctrl).touched? 'visible':'hidden'}"
              class="help-block"> {{formGroup.hasError('data', ctrl)? formGroup.getError('data', ctrl): formConfig[ctrl][3]['error']?  formConfig[ctrl][3]['error']: formConfig[ctrl][3]['label']+'为必填项' }}</span>

</div>

ts:

this.formConfig = Object.assign({}, {
    id: [, , ,
        {
            'section': 'base',
            hidden: true
        }],
    assetsId: [, , ,
        {
            label: '资产ID',
            'section': 'base',
            readonly: true,
            // hidden: true,
            type: 'text'
        }],
    name: [, Validators.required, ,
        {
            label: '资产名称',
            'section': 'base',
            type: 'text'
        }],
});
this.formGroup = new FormBuilder().group(this.formConfig);

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值