Angular+NG-ZORRO From表单 数组表单

1、form表单中包含普通参数,也包含数组参数

// form 表单配置
 this.validateForm = this.fb.group({
      name: [null, [Validators.required]], // 名称
      id: [null], // 
      address: [null, [Validators.required]], // 地址
      linkmanName: [null, [Validators.required]], // 姓名
      linkmanTel: [ null,[Validators.required]], // 电话
      accountInfo: new FormArray([]), // 数组
 });

 this.addAccountInfo(); // 初始化数组


addAccountInfo() {

    const myContact: FormGroup = new FormGroup({
        account: new FormControl({value: null, disabled: false},[Validators.required]),
        address: new FormControl({value: null, disabled: false},[Validators.required])
    })
    // 添加数组元素
    this.accountInfo.push(myContact);
}

get accountInfo() {
  return this.validateForm.get('accountInfo') as FormArray;
}

  // 删除信息
  removeContact(i: number) {
    this.accountInfo.removeAt(i);
  }


// 编辑时数组数据回显
result.accountInfo.forEach((item: any) =>{
    this.addContact();
})
this.validateForm.setValue(result);
this.changeDetectorRef.detectChanges();
// tslint:disable-next-line:forin
for (const i in this.validateForm.controls) {
   this.validateForm.controls[i].markAsDirty();
   this.validateForm.controls[i].updateValueAndValidity();
}

2、html绘制表单数组

<div formArrayName="accountInfo">
          <div  class="form-array-box" *ngFor="let contact of accountInfo.controls; let i = index"
          [formGroupName]="i">
            <div class="form-array-info">
              <nz-form-item class="marbt_10 padd_10">
                <nz-form-label [nzSpan]="6" [nzRequired]="nzRequired" nzFor="account">帐号</nz-form-label>
                <nz-form-control [nzSpan]="16" nzHasFeedback nzErrorTip="帐号不能为空" *ngIf="type !== 'info'">
                  <input
                    type="text"
                    class="form-control"
                    nz-input
                    placeholder="请输入账号"
                    formControlName="account"
                    maxlength="25"
                  />
                  <nz-form-explain
                    *ngIf="contact.get('account')?.dirty && contact.get('account')?.errors"
                  >
                    请输入正确的账号!
                  </nz-form-explain>
                </nz-form-control>
                <nz-form-control [nzSpan]="16" nzHasFeedback *ngIf="type === 'info'">
                  <span class="info-text">{{ validateForm.value.accountInfo[i].account }}</span>
                </nz-form-control>
              </nz-form-item>
              <nz-form-item class="marbt_20">
                <nz-form-label [nzSpan]="6" [nzRequired]="nzRequired" nzFor="bank">地址</nz-form-label>
                <nz-form-control [nzSpan]="16" nzHasFeedback nzErrorTip="地址不能为空" *ngIf="type !== 'info'">
                  <input
                    type="text"
                    class="form-control"
                    nz-input
                    placeholder="请输入地址"
                    formControlName="address"
                    maxlength="20"
                  />
                  <nz-form-explain *ngIf="contact.get('address')?.dirty && contact.get('address')?.errors">
                    请输入正确的地址!
                  </nz-form-explain>
                </nz-form-control>
                <nz-form-control [nzSpan]="16" nzHasFeedback *ngIf="type === 'info'">
                  <span class="info-text">{{  validateForm.value.accountInfo[i].address }}</span>
                </nz-form-control>
              </nz-form-item>
            </div>
            <div class="delete-icon" *ngIf="type !== 'info' && accountInfo.length !== 1" (click)="removeContact(i)">
              <i nz-icon nzType="minus-circle" nzTheme="outline"></i>
            </div>
          </div>
          <div style="width: 100%;" *ngIf="type !== 'info' && accountInfo.length < 3">
            <button type="button" class="add-contact-btn btn" (click)="addContact()">
              <i nz-icon nzType="plus-circle" nzTheme="outline"></i>
              添加账户
            </button>
          </div>
        </div>

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Angular中,您可以使用ng-zorro-antd库中的`nz-date-picker`组件来创建一个带有日历和日期范围的日期选择器。以下是一个使用`nz-date-picker`的例子: 1. 首先,您需要在您的应用中安装和导入`ng-zorro-antd`库。 2. 在您的组件的HTML模板中添加一个`nz-date-picker`元素,并使用`nzMode`属性将其定义为日期选择器。 ```html <nz-date-picker nzMode="date"></nz-date-picker> ``` 3. 在您的组件中,您需要定义一个`nz-date-picker`对象,并将其与`nz-date-picker`元素相关联。您还可以使用`nzDisabledDate`属性来定义可选择的日期范围。 ```typescript import { Component } from '@angular/core'; import { NzDatePickerModule } from 'ng-zorro-antd/date-picker'; @Component({ selector: 'app-date-picker', templateUrl: './date-picker.component.html', styleUrls: ['./date-picker.component.css'] }) export class DatePickerComponent { disabledDate = (current: Date): boolean => { const minDate = new Date(2020, 0, 1); const maxDate = new Date(2020, 11, 31); return current < minDate || current > maxDate; } constructor() { } } ``` 在这个例子中,我们定义了一个`disabledDate`函数来禁用不在2020年1月1日和2020年12月31日之间的日期。 4. 最后,您需要在`nz-date-picker`中使用`nzFormat`属性来定义日期的格式。 ```html <nz-date-picker nzMode="date" nzFormat="yyyy-MM-dd" [nzDisabledDate]="disabledDate"></nz-date-picker> ``` 在这个例子中,我们将日期格式定义为`yyyy-MM-dd`。 这就是如何在Angular中使用ng-zorro-antd库中的`nz-date-picker`组件创建一个带有日历和日期范围的日期选择器。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值