zoukankan      html  css  js  c++  java
  • @angular/cli项目构建--Dynamic.Form(2)

    form-item-control.service.ts update

    @Injectable()
    export class FormItemControlService {
      constructor(private formBuilder: FormBuilder) {
      }
    
      toFormGroup(formItems: FormItemBase<any>[]) {
        const group: any = {};
        formItems.forEach(formItem => {
          group[formItem.key] = formItem.required
            ? [formItem.value || '', Validators.required]
            : [formItem.value || ''];
        });
        return this.formBuilder.group(group);
      }
    }

    dynamic-form.component update

    <div [formGroup]="form">
      <label [attr.for]="formItem.key">{{formItem.label}}</label>
      <div [ngSwitch]="formItem.controlType">
    
        <input *ngSwitchCase="'textBox'" [formControlName]="formItem.key"
               [id]="formItem.key" [type]="formItem.type" maxlength="{{formItem.maxLength}}">
    
        <select [id]="formItem.key" *ngSwitchCase="'dropDown'" [formControlName]="formItem.key">
          <option *ngFor="let opt of formItem.options" [value]="opt.key">{{opt.value}}</option>
        </select>
    
        <div *ngFor="let opt of formItem.radioOptions">
          <input *ngSwitchCase="'radio'" [formControlName]="formItem.key"
                 [id]="opt.key" type="radio" [value]="opt.key">
          <label [attr.for]="opt.key">{{opt.value}}</label>
        </div>
    
        <div *ngFor="let opt of formItem.checkOptions">
          <input *ngSwitchCase="'checkbox'" [formControlName]="formItem.key"
                 [id]="opt.key" type="checkbox" [value]="opt.key">
          <label [attr.for]="opt.key">{{opt.value}}</label>
        </div>
    
      </div>
    
      <!--<div class="errorMessage" *ngIf="!isValid && form.get(formItem.key).touched">{{formItem.label}} is required</div>-->
      <div class="errorMessage"
           *ngIf="form.get(formItem.key).hasError('required') && form.get(formItem.key).touched">
        {{formItem.label}} is required
      </div>
    </div>
  • 相关阅读:
    关于使用_bstr_t的一个坑
    ubuntu下使用sublime text进行C编程开发尝鲜
    [转]在ubuntu下安装sublime text
    [转] COM编程总结
    [转]wcout输出中文却不显示出来
    理解抽象类与接口
    软件设计原则[总结]
    [转] 在图标库中,找到合适的图标 ico
    [转]单播、多播(组播)、广播简介
    NUC970开发资源
  • 原文地址:https://www.cnblogs.com/Nyan-Workflow-FC/p/8133967.html
Copyright © 2011-2022 走看看