好人一生平安丶 發表於 2019-6-2 09:59:00

表单-angular

<p><img src="https://img2018.cnblogs.com/blog/1388665/201906/1388665-20190605065253569-282715819.png"></p>
<p>模板表单:</p>
<div class="cnblogs_code">
<pre>&lt;form #myform="ngForm" (ngSubmit)="onsubmit(myform.value)" &gt;
   &lt;div ngModelGroup="userInfo"&gt;
         &lt;input ngModel name="username" /&gt;
         &lt;input ngModel name="password" /&gt;
   &lt;/div&gt;
   &lt;button type="submit"&gt;点我&lt;/button&gt;
&lt;/form&gt;
<span style="color: rgba(0, 0, 0, 1)">
onsubmit(value){
    console.log(value);
}</span></pre>
</div>
<p>&nbsp;例子:添加有多项的表单项</p>
<p><img src="https://img2018.cnblogs.com/blog/1388665/201906/1388665-20190612160010177-1640200342.png"></p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">form </span><span style="color: rgba(255, 0, 0, 1)">#myform </span><span style="color: rgba(0, 0, 255, 1)">="ngForm"</span><span style="color: rgba(255, 0, 0, 1)"> (ngSubmit)</span><span style="color: rgba(0, 0, 255, 1)">="onsubmit(myform.value)"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">style</span><span style="color: rgba(0, 0, 255, 1)">="width: 50%"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">nz-row nzGutter</span><span style="color: rgba(0, 0, 255, 1)">="4"</span><span style="color: rgba(255, 0, 0, 1)"> *ngFor</span><span style="color: rgba(0, 0, 255, 1)">="let item of partners;let i = index"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">nz-col nzSpan</span><span style="color: rgba(0, 0, 255, 1)">="8"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">nz-form-item </span><span style="color: rgba(255, 0, 0, 1)">nzFlex</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">nz-form-label</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>姓名<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">nz-form-label</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">nz-form-control</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">input </span><span style="color: rgba(255, 0, 0, 1)">nz-input placeholder</span><span style="color: rgba(0, 0, 255, 1)">="placeholder"</span><span style="color: rgba(255, 0, 0, 1)"> name</span><span style="color: rgba(0, 0, 255, 1)">="username_{{i}}"</span><span style="color: rgba(255, 0, 0, 1)"> [(ngModel)]</span><span style="color: rgba(0, 0, 255, 1)">="item.username"</span><span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">nz-form-control</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">nz-form-item</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">nz-col nzSpan</span><span style="color: rgba(0, 0, 255, 1)">="8"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">nz-form-item </span><span style="color: rgba(255, 0, 0, 1)">nzFlex</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">nz-form-label</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>手机号<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">nz-form-label</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">nz-form-control</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">input </span><span style="color: rgba(255, 0, 0, 1)">nz-input placeholder</span><span style="color: rgba(0, 0, 255, 1)">="placeholder"</span><span style="color: rgba(255, 0, 0, 1)"> name</span><span style="color: rgba(0, 0, 255, 1)">="tel_{{i}}"</span><span style="color: rgba(255, 0, 0, 1)"> [(ngModel)]</span><span style="color: rgba(0, 0, 255, 1)">="item.tel"</span><span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">nz-form-control</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">nz-form-item</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">nz-col nzSpan</span><span style="color: rgba(0, 0, 255, 1)">="8"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)">
      性别:
      </span><span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">nz-radio-group </span><span style="color: rgba(255, 0, 0, 1)">[(ngModel)]</span><span style="color: rgba(0, 0, 255, 1)">="item.radioValue"</span><span style="color: rgba(255, 0, 0, 1)"> </span><span style="color: rgba(0, 0, 255, 1)">="'solid'"</span><span style="color: rgba(255, 0, 0, 1)">name</span><span style="color: rgba(0, 0, 255, 1)">="Gender_{{i}}"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">label </span><span style="color: rgba(255, 0, 0, 1)">nz-radio-button nzValue</span><span style="color: rgba(0, 0, 255, 1)">="1"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>男<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">label</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">label </span><span style="color: rgba(255, 0, 0, 1)">nz-radio-button nzValue</span><span style="color: rgba(0, 0, 255, 1)">="0"</span> <span style="color: rgba(0, 0, 255, 1)">&gt;</span>女<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">label</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">nz-radio-group</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">nz-form-item</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">nz-form-control </span><span style="color: rgba(255, 0, 0, 1)"></span><span style="color: rgba(0, 0, 255, 1)">="{ span: 24, offset: 0 }"</span><span style="color: rgba(255, 0, 0, 1)"> </span><span style="color: rgba(0, 0, 255, 1)">="{ span: 20, offset: 4 }"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">button </span><span style="color: rgba(255, 0, 0, 1)">nz-button nzType</span><span style="color: rgba(0, 0, 255, 1)">="dashed"</span><span style="color: rgba(255, 0, 0, 1)"> style</span><span style="color: rgba(0, 0, 255, 1)">="width:60%"</span><span style="color: rgba(255, 0, 0, 1)"> (click)</span><span style="color: rgba(0, 0, 255, 1)">="addField($event)"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">i </span><span style="color: rgba(255, 0, 0, 1)">nz-icon type</span><span style="color: rgba(0, 0, 255, 1)">="plus"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">i</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)"> 添加表单项
      </span><span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">button</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">nz-form-control</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">nz-form-item</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">button </span><span style="color: rgba(255, 0, 0, 1)">type</span><span style="color: rgba(0, 0, 255, 1)">="submit"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>提交<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">button</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">form</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span></pre>
</div>
<div class="cnblogs_code">
<pre>import { Component, OnInit } from '@angular/core'<span style="color: rgba(0, 0, 0, 1)">;
import { FormBuilder, FormArray } from </span>'@angular/forms'<span style="color: rgba(0, 0, 0, 1)">;
@Component({
selector: </span>'app-card-whole-consume'<span style="color: rgba(0, 0, 0, 1)">,
templateUrl: </span>'./card-whole-consume.component.html'<span style="color: rgba(0, 0, 0, 1)">,
styleUrls: [</span>'./card-whole-consume.component.css'<span style="color: rgba(0, 0, 0, 1)">]
})
export class CardWholeConsumeComponent implements OnInit {
partners </span>=<span style="color: rgba(0, 0, 0, 1)"> [];
partnersObj </span>=<span style="color: rgba(0, 0, 0, 1)"> [];
radioValue </span>= 0<span style="color: rgba(0, 0, 0, 1)">;
constructor() { }
ngOnInit() {

}
addField(e) {
    </span><span style="color: rgba(0, 0, 255, 1)">this</span>.partners = ([...<span style="color: rgba(0, 0, 255, 1)">this</span>.partners ,{username:'',tel:'',radioValue:'1'<span style="color: rgba(0, 0, 0, 1)">}]);
}
onsubmit(val) {
   console.log(</span>'val====' +<span style="color: rgba(0, 0, 0, 1)"> JSON.stringify(val));
}
}</span></pre>
</div>
<p>&nbsp;</p>
<hr>
<p>&nbsp;</p>
<p>响应式表单:</p>
<p>import { ReactiveFormsModule } from '@angular/forms'</p>
<p>imports: [ ReactiveFormsModule ]</p>
<p>&nbsp;例子:添加有单个项的表单项</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">form </span><span style="color: rgba(255, 0, 0, 1)"></span><span style="color: rgba(0, 0, 255, 1)">="formGroup"</span><span style="color: rgba(255, 0, 0, 1)"> (submit)</span><span style="color: rgba(0, 0, 255, 1)">="onsubmit()"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
   <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">input </span><span style="color: rgba(255, 0, 0, 1)">formControlName</span><span style="color: rgba(0, 0, 255, 1)">="username"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
   <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">input </span><span style="color: rgba(255, 0, 0, 1)">formControlName</span><span style="color: rgba(0, 0, 255, 1)">="password"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
   <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">formGroupName</span><span style="color: rgba(0, 0, 255, 1)">="timeGroup"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">input </span><span style="color: rgba(255, 0, 0, 1)">formControlName</span><span style="color: rgba(0, 0, 255, 1)">="from"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">input </span><span style="color: rgba(255, 0, 0, 1)">formControlName</span><span style="color: rgba(0, 0, 255, 1)">="to"</span> <span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
   <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
   <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">formArrayName</span><span style="color: rgba(0, 0, 255, 1)">="emails"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
         <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">*ngFor</span><span style="color: rgba(0, 0, 255, 1)">="let item of this.formGroup.get('emails').controls;let i = index"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">input </span><span style="color: rgba(255, 0, 0, 1)">type</span><span style="color: rgba(0, 0, 255, 1)">="text"</span><span style="color: rgba(255, 0, 0, 1)"> </span><span style="color: rgba(0, 0, 255, 1)">='i'</span><span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
                <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">span </span><span style="color: rgba(255, 0, 0, 1)">(click)</span><span style="color: rgba(0, 0, 255, 1)">="removeItem(i)"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>删除<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">span</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
         <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
   <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
   <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">span </span><span style="color: rgba(255, 0, 0, 1)">(click)</span><span style="color: rgba(0, 0, 255, 1)">="addItem()"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>添加<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">span</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">button </span><span style="color: rgba(255, 0, 0, 1)">type</span><span style="color: rgba(0, 0, 255, 1)">="submit"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>点我<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">button</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">form</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span></pre>
</div>
<div class="cnblogs_code">
<pre>import { Component, OnInit } from '@angular/core'<span style="color: rgba(0, 0, 0, 1)">;
import { FormBuilder } from </span>'@angular/forms'<span style="color: rgba(0, 0, 0, 1)">;
@Component({
selector: </span>'app-index'<span style="color: rgba(0, 0, 0, 1)">,
templateUrl: </span>'./index.component.html'<span style="color: rgba(0, 0, 0, 1)">,
styleUrls: [</span>'./index.component.sass'<span style="color: rgba(0, 0, 0, 1)">]
})
export class IndexComponent implements OnInit {
formGroup;
constructor(private router:Router,private formBuilder:FormBuilder) {
      </span><span style="color: rgba(0, 0, 255, 1)">this</span>.formGroup =<span style="color: rgba(0, 0, 0, 1)"> formBuilder.group({
            username:</span>'xiaohua'<span style="color: rgba(0, 0, 0, 1)">,
            password:</span>'123456'<span style="color: rgba(0, 0, 0, 1)">,
            timeGroup: formBuilder.group({
                from:</span>''<span style="color: rgba(0, 0, 0, 1)">,
                to:</span>''<span style="color: rgba(0, 0, 0, 1)">
            }),
            emails:formBuilder.array([
                </span>'xxxx'<span style="color: rgba(0, 0, 0, 1)">,
                </span>'uyyy'<span style="color: rgba(0, 0, 0, 1)">
            ])
      })
    }
    onsubmit(){
      console.log(</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.formGroup.value);
    }<br>    //增加input项
    addItem(){
      const emails </span>= <span style="color: rgba(0, 0, 255, 1)">this</span>.formGroup.get('emails'<span style="color: rgba(0, 0, 0, 1)">) as FormArray;
      emails.push(</span><span style="color: rgba(0, 0, 255, 1)">this</span>.formBuilder.control([''<span style="color: rgba(0, 0, 0, 1)">]));
    }<br>    //删除input项
    removeItem(index){
      const emails </span>= <span style="color: rgba(0, 0, 255, 1)">this</span>.formGroup.get('emails'<span style="color: rgba(0, 0, 0, 1)">) as FormArray;
      emails.removeAt(index);
    }
}</span></pre>
</div>
<p>&nbsp;例子:添加有多项的表单项</p>
<p>&nbsp;出现问题:1)xxx_{{ i }} 会报错&nbsp; 2)不知道如何初始化含radio的默认值</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">form </span><span style="color: rgba(255, 0, 0, 1)"></span><span style="color: rgba(0, 0, 255, 1)">="myform"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">style</span><span style="color: rgba(0, 0, 255, 1)">="width: 50%"</span><span style="color: rgba(255, 0, 0, 1)">formArrayName</span><span style="color: rgba(0, 0, 255, 1)">="usersArray"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">nz-row nzGutter</span><span style="color: rgba(0, 0, 255, 1)">="4"</span><span style="color: rgba(255, 0, 0, 1)"> *ngFor</span><span style="color: rgba(0, 0, 255, 1)">="let item of this.myform.get('usersArray').controls;let i = index;"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">nz-col nzSpan</span><span style="color: rgba(0, 0, 255, 1)">="8"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">nz-form-item </span><span style="color: rgba(255, 0, 0, 1)">nzFlex</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">nz-form-label</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>姓名<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">nz-form-label</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">nz-form-control</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">input </span><span style="color: rgba(255, 0, 0, 1)">nz-input placeholder</span><span style="color: rgba(0, 0, 255, 1)">="placeholder"</span><span style="color: rgba(255, 0, 0, 1)"> formControlName</span><span style="color: rgba(0, 0, 255, 1)">='username_{{i}}'</span><span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">nz-form-control</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">nz-form-item</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">nz-col nzSpan</span><span style="color: rgba(0, 0, 255, 1)">="8"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">nz-form-item </span><span style="color: rgba(255, 0, 0, 1)">nzFlex</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">nz-form-label</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>手机号<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">nz-form-label</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">nz-form-control</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
            <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">input </span><span style="color: rgba(255, 0, 0, 1)">nz-input placeholder</span><span style="color: rgba(0, 0, 255, 1)">="placeholder"</span><span style="color: rgba(255, 0, 0, 1)"> formControlName</span><span style="color: rgba(0, 0, 255, 1)">='tel_{{i}}'</span><span style="color: rgba(0, 0, 255, 1)">/&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">nz-form-control</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">nz-form-item</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">nz-col nzSpan</span><span style="color: rgba(0, 0, 255, 1)">="8"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)">
      性别:
      </span><span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">nz-radio-group </span><span style="color: rgba(255, 0, 0, 1)"></span><span style="color: rgba(0, 0, 255, 1)">="'solid'"</span><span style="color: rgba(255, 0, 0, 1)">formControlName</span><span style="color: rgba(0, 0, 255, 1)">='Gender_{{i}}'</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">label </span><span style="color: rgba(255, 0, 0, 1)">nz-radio-button nzValue</span><span style="color: rgba(0, 0, 255, 1)">="1"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>男<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">label</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">label </span><span style="color: rgba(255, 0, 0, 1)">nz-radio-button nzValue</span><span style="color: rgba(0, 0, 255, 1)">="0"</span> <span style="color: rgba(0, 0, 255, 1)">&gt;</span>女<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">label</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">nz-radio-group</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">nz-form-item</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">nz-form-control </span><span style="color: rgba(255, 0, 0, 1)"></span><span style="color: rgba(0, 0, 255, 1)">="{ span: 24, offset: 0 }"</span><span style="color: rgba(255, 0, 0, 1)"> </span><span style="color: rgba(0, 0, 255, 1)">="{ span: 20, offset: 4 }"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">button </span><span style="color: rgba(255, 0, 0, 1)">nz-button nzType</span><span style="color: rgba(0, 0, 255, 1)">="dashed"</span><span style="color: rgba(255, 0, 0, 1)"> style</span><span style="color: rgba(0, 0, 255, 1)">="width:60%"</span><span style="color: rgba(255, 0, 0, 1)"> (click)</span><span style="color: rgba(0, 0, 255, 1)">="addField()"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
          <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">i </span><span style="color: rgba(255, 0, 0, 1)">nz-icon type</span><span style="color: rgba(0, 0, 255, 1)">="plus"</span><span style="color: rgba(0, 0, 255, 1)">&gt;&lt;/</span><span style="color: rgba(128, 0, 0, 1)">i</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span><span style="color: rgba(0, 0, 0, 1)"> 添加表单项
      </span><span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">button</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
      <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">nz-form-control</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">nz-form-item</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
    <span style="color: rgba(0, 0, 255, 1)">&lt;</span><span style="color: rgba(128, 0, 0, 1)">button </span><span style="color: rgba(255, 0, 0, 1)">type</span><span style="color: rgba(0, 0, 255, 1)">="submit"</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>提交<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">button</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span>
<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">form</span><span style="color: rgba(0, 0, 255, 1)">&gt;</span></pre>
</div>
<div class="cnblogs_code">
<pre>import { Component, OnInit } from '@angular/core'<span style="color: rgba(0, 0, 0, 1)">;
import { FormBuilder, FormArray } from </span>'@angular/forms'<span style="color: rgba(0, 0, 0, 1)">;
@Component({
selector: </span>'app-card-whole-consume'<span style="color: rgba(0, 0, 0, 1)">,
templateUrl: </span>'./card-whole-consume.component.html'<span style="color: rgba(0, 0, 0, 1)">,
styleUrls: [</span>'./card-whole-consume.component.css'<span style="color: rgba(0, 0, 0, 1)">]
})
export class CardWholeConsumeComponent implements OnInit {
partners </span>=<span style="color: rgba(0, 0, 0, 1)"> [];
partnersObj </span>=<span style="color: rgba(0, 0, 0, 1)"> [];
myform;
constructor(private formBuilder: FormBuilder) { }
ngOnInit() {
    </span><span style="color: rgba(0, 0, 255, 1)">this</span>.myform = <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.formBuilder.group({
      usersArray: </span><span style="color: rgba(0, 0, 255, 1)">this</span>.formBuilder.array([''<span style="color: rgba(0, 0, 0, 1)">])
    });
}
addField() {
    const arr </span>= <span style="color: rgba(0, 0, 255, 1)">this</span>.myform.get('usersArray'<span style="color: rgba(0, 0, 0, 1)">) as FormArray;
    arr.push(</span><span style="color: rgba(0, 0, 255, 1)">this</span>.formBuilder.control([''<span style="color: rgba(0, 0, 0, 1)">]));
}
onsubmit(val) {
    console.log(</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.myform.value);
}
}</span></pre>
</div>
<p>&nbsp;</p>
<hr>
<p>&nbsp;</p>
<p>自定义响应式表单(解决表单提交非input类型数据,,多用于单选/多选):</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">// 引用组件:<br>&lt;app-thumb formControlName="avatar" &gt;&lt;/app-thumb&gt;<br>// app-thumb组件:<br>&lt;</span><span style="color: rgba(128, 0, 0, 1)">div </span><span style="color: rgba(255, 0, 0, 1)">class</span><span style="color: rgba(0, 0, 255, 1)">="imgbox"</span><span style="color: rgba(255, 0, 0, 1)"> *ngFor</span><span style="color: rgba(0, 0, 255, 1)">="let item of data;let i=index"</span><span style="color: rgba(255, 0, 0, 1)"> (click)</span><span style="color: rgba(0, 0, 255, 1)">="ImgChange(i)"</span> <span style="color: rgba(0, 0, 255, 1)">&gt;</span>11<span style="color: rgba(0, 0, 255, 1)">&lt;/</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">&gt;<br></span></pre>
</div>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">import { Component, OnInit , forwardRef } from '@angular/core';
import { ControlValueAccessor , NG_VALUE_ACCESSOR , NG_VALIDATORS } from '@angular/forms';
import { FormBuilder } from '@angular/forms';
@Component({
selector: 'app-thumb',
templateUrl: './thumb.component.html',
styleUrls: ['./thumb.component.sass'],
providers: [{
    provide: NG_VALUE_ACCESSOR,
    useExisting: forwardRef( () =&gt; ThumbComponent ),
    multi: true
}]
})
export class ThumbComponent implements ControlValueAccessor {
form;
constructor(formBuilder: FormBuilder) {
    this.form = formBuilder.group({
      thumb: []
    });
}
data = ['niua','sdsds'];
selected ;
detailFun: (_: any) =&gt; {};
writeValue(obj: any):void {
    this.selected = obj;
}
registerOnChange(fn: any):void{
    this.detailFun = fn;
}
registerOnTouched(fn: any):void{

}
ImgChange(i) {
   this.selected = this.data;
   this.detailFun(this.selected);
   console.log(this.selected);
}

}</span></pre>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<form></form><br><br>
来源:https://www.cnblogs.com/yuyedaocao/p/10962054.html
頁: [1]
查看完整版本: 表单-angular