表单-angular
<p><img src="https://img2018.cnblogs.com/blog/1388665/201906/1388665-20190605065253569-282715819.png"></p><p>模板表单:</p>
<div class="cnblogs_code">
<pre><form #myform="ngForm" (ngSubmit)="onsubmit(myform.value)" >
<div ngModelGroup="userInfo">
<input ngModel name="username" />
<input ngModel name="password" />
</div>
<button type="submit">点我</button>
</form>
<span style="color: rgba(0, 0, 0, 1)">
onsubmit(value){
console.log(value);
}</span></pre>
</div>
<p> 例子:添加有多项的表单项</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)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">nz-form-label</span><span style="color: rgba(0, 0, 255, 1)">></span>姓名<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">nz-form-label</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">nz-form-control</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">/></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">nz-form-control</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">nz-form-item</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">nz-form-label</span><span style="color: rgba(0, 0, 255, 1)">></span>手机号<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">nz-form-label</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">nz-form-control</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">/></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">nz-form-control</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">nz-form-item</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span><span style="color: rgba(0, 0, 0, 1)">
性别:
</span><span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>男<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">label</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>女<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">label</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">nz-radio-group</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">nz-form-item</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></</span><span style="color: rgba(128, 0, 0, 1)">i</span><span style="color: rgba(0, 0, 255, 1)">></span><span style="color: rgba(0, 0, 0, 1)"> 添加表单项
</span><span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">button</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">nz-form-control</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">nz-form-item</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>提交<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">button</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">form</span><span style="color: rgba(0, 0, 255, 1)">></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> </p>
<hr>
<p> </p>
<p>响应式表单:</p>
<p>import { ReactiveFormsModule } from '@angular/forms'</p>
<p>imports: [ ReactiveFormsModule ]</p>
<p> 例子:添加有单个项的表单项</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">/></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">/></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>删除<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">span</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>添加<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">span</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>点我<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">button</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">form</span><span style="color: rgba(0, 0, 255, 1)">></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> 例子:添加有多项的表单项</p>
<p> 出现问题:1)xxx_{{ i }} 会报错 2)不知道如何初始化含radio的默认值</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">nz-form-label</span><span style="color: rgba(0, 0, 255, 1)">></span>姓名<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">nz-form-label</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">nz-form-control</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">/></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">nz-form-control</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">nz-form-item</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">nz-form-label</span><span style="color: rgba(0, 0, 255, 1)">></span>手机号<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">nz-form-label</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">nz-form-control</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">/></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">nz-form-control</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">nz-form-item</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span><span style="color: rgba(0, 0, 0, 1)">
性别:
</span><span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>男<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">label</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>女<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">label</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">nz-radio-group</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</span><span style="color: rgba(128, 0, 0, 1)">nz-form-item</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></</span><span style="color: rgba(128, 0, 0, 1)">i</span><span style="color: rgba(0, 0, 255, 1)">></span><span style="color: rgba(0, 0, 0, 1)"> 添加表单项
</span><span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">button</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">nz-form-control</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">nz-form-item</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"><</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)">></span>提交<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">button</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">></span>
<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">form</span><span style="color: rgba(0, 0, 255, 1)">></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> </p>
<hr>
<p> </p>
<p>自定义响应式表单(解决表单提交非input类型数据,,多用于单选/多选):</p>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 255, 1)">// 引用组件:<br><app-thumb formControlName="avatar" ></app-thumb><br>// app-thumb组件:<br><</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)">></span>11<span style="color: rgba(0, 0, 255, 1)"></</span><span style="color: rgba(128, 0, 0, 1)">div</span><span style="color: rgba(0, 0, 255, 1)">><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( () => ThumbComponent ),
multi: true
}]
})
export class ThumbComponent implements ControlValueAccessor {
form;
constructor(formBuilder: FormBuilder) {
this.form = formBuilder.group({
thumb: []
});
}
data = ['niua','sdsds'];
selected ;
detailFun: (_: any) => {};
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> </p>
<p> </p>
<form></form><br><br>
来源:https://www.cnblogs.com/yuyedaocao/p/10962054.html
頁:
[1]