• [ngx-formly] Implement multi-column layout Forms with Angular Formly


    Real forms are rarely visualized as a single column with one field below the other. Rather they often span over multiple columns to save screen space. In this lesson we'll have a look how to implement such a multi-column form with Formly.

    Note, future versions of Formly might even include some native constructs for more advanced layouts

    function Row(fields: FormlyFieldConfig[]) {
      return {
        fieldGroup: fields,
        fieldGroupClassName: 'display-flex flex-wrap row',
      };
    }
    
    function Column(fields: FormlyFieldConfig[]) {
      return {
        fieldGroup: fields,
        fieldGroupClassName: 'display-flex column',
      };
    }
    .display-flex {
      display: flex;
    }
    
    .row {
      flex-direction: row;
    }
    
    .column {
      flex-direction: column;
    }
    
    .flex-wrap {
      flex-wrap: wrap;
    }
    
    @for $i from 1 through 12 {
      .flex-#{$i} {
        flex: $i;
      }
    }
    
    [class*='flex-'] {
      padding-left: 10px;
      padding-right: 10px;
    }
    
    [class*='flex-']:first-child,
    .flex-12 {
      padding-left: 0;
    }
    
    [class*='flex-']:last-child {
      padding-right: 0;
    }
        Row([
          {
            key: 'firstname',
            type: 'input',
            className: 'flex-1',
            templateOptions: {
              type: 'text',
              label: 'FirstName',
              required: true,
              attributes: {
                'data-cy': 'firstname',
              },
            },
          },
          {
            key: 'age',
            type: 'input',
            className: 'flex-1',
            templateOptions: {
              type: 'number',
              label: 'Age',
              min: 18, // use global min error message
            },
            // override the global min error message
            validation: {
              messages: {
                min: 'Sorry, you have to be older than 18',
              },
            },
          },
        ]),
        Column([
          {
            key: 'ip',
            type: 'input',
            templateOptions: {
              required: true,
              label: 'IP Address',
            },
            validators: {
              // validation: ['ip']
              ip2: {
                expression: c => !c.value || /(d{1,3}.){3}d{1,3}/.test(c.value),
                message: (errorr, field: FormlyFieldConfig) =>
                  `"${field.formControl.value}" is not valid`,
              },
            },
          },
        ]),

  • 相关阅读:
    CKA易错题整理:五、配置⽹络策略 NetworkPolicy
    CKA易错题整理:第四题:备份还原 etcd
    2022 暑期复健训练(持续更新)
    【其他】STL 容器初始化后占用空间大小测试
    2步 从百度网盘好友分享文件中导出文件目录
    简单易懂的时序数据压缩算法分析
    判断字符串是否可以转成BigDecimal(可转用小数,负数)
    RocketMq
    【leetCode】三数之和
    【leetCode】盛最多水的容器
  • 原文地址:https://www.cnblogs.com/Answer1215/p/12177982.html
Copyright © 2020-2023  润新知