• angular2表单 常用


    动态表单

    1、表单验证

    在表单提交时,进行手动判断每一项的验证

    submit(){
      for (const i in this.validateForm.controls) { 
        this.validateForm.controls[i].markAsDirty();
        this.validateForm.controls[i].updateValueAndValidity(); 
      }
      // this.validateForm.valid 表单是否通过验证
      if(this.validateForm.valid){
        // 执行提交
      }else {
        // 提示
      }
    }

    2、表单关联绑定(valueChange),取消绑定

    // 绑定
    const vc = this.addForm.controls.psid.valueChanges.subscribe(val => {
          // 执行事件
        });
    
    // 取消绑定
    vc.unsubscribe();

    3、表单重新定义验证

    // 每项重置完后都需要执行updateValueAndValidity(),更新controls,才能生效
    
    // 设置为必填项
    this.addForm.controls.fuelName.setValidators([Validators.required]);
    this.addForm.controls.fuelName.updateValueAndValidity();
    
    // 设置为无验证
    this.addForm.controls.fuelName.setValidators(null);
    this.addForm.controls.fuelName.updateValueAndValidity();

    4、表单设置禁用

    // 通常写法
    this.psForm = this.fb.group({
        psName: ['', []],
        psCode: ['', []]
    })
    
    // 需要禁用的写法
    this.psForm = this.fb.group({
        psName: [{value: '', disabled: true}, []],
        psCode: [{value: '', disabled: true}, []]
    });
    
    // 通常获取表单value对象
    const valObj = this.psForm.value;
    
    // 禁用后获取表单value对象
    const valObj = this.psForm.getRawValue();

    5、表单重新定义是否禁用

    this.psForm.controls[key].reset({value: '123', disabled: true});

     6、表单提交触发验证时,会自动触发表单的valueChanges事件,解决方法:

     Object.keys(this.addForm.controls).forEach(key => {
                  this.addForm.controls[key].markAsDirty();
                  this.addForm.controls[key].updateValueAndValidity({
                    emitEvent: false // 此项配置为true或默认不传,会默认触发表单项的valueChanges事件,若为false,则不触发
                  });
                });

     7、使用 this.addForm.value 获取不到禁用的表单项,

    可以通过表单的 getRowValue() 方法获取全部表单项

  • 相关阅读:
    字符串方法
    函数的属性和方法
    数组的去重!!
    常见的数组方法
    JS中的函数
    JavaScript 中表达式和语句的区别
    运算符优先级
    题解 CF813B 【The Golden Age】
    题解 CF834B 【The Festive Evening】
    题解 CF810B 【Summer sell-off】
  • 原文地址:https://www.cnblogs.com/jing5990/p/12331266.html
Copyright © 2020-2023  润新知