• [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`,
              },
            },
          },
        ]),

  • 相关阅读:
    我的第一个作业
    团队任务3:第一次冲刺
    课后作业3:个人项目(词频统计及其效能分析)
    课后作业2:个人项目
    一切的开始,从未有过的改变——课后作业1:准备
    Fiddler 添加IP显示、响应时间功能
    Jmeter所有结果分析
    云盘资源爬取利器 fmv
    python 中的 sys , os 模块用法总结
    Python 编写登录接口
  • 原文地址:https://www.cnblogs.com/Answer1215/p/12177982.html
Copyright © 2020-2023  润新知