zoukankan      html  css  js  c++  java
  • [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`,
              },
            },
          },
        ]),

  • 相关阅读:
    clion中配置glfw和glew
    oracle xe在centos下的安装(更)
    git服务搭建以及本地连接
    IDEA导入Maven多项目(Mac下)
    关于反射的学习理解
    MySQL安装及后续配置
    idea配置servlet记录,tmocat当服务器,学习
    mapper映射文件配置之select、resultMap、resultType
    mysql多表查询
    看看阿里员工分享的java知识
  • 原文地址:https://www.cnblogs.com/Answer1215/p/12177982.html
Copyright © 2011-2022 走看看