Angular 4 - 具有多个组件的表单 - 提交数据
Angular 4 - Form with multiple components - Submit data
我是新手 angular 4.
我有一个包含 3 个部分的页面。这些部分创建为单独的表单
第 1 部分 - 基本信息
first name
last name
email
第 2 部分 - 联系信息
address
city
state
zip
第 3 部分 - 订单信息
Order id
Item name
quantity
这些部分分为不同的组件 - BasicInfoComponent、ContactInfoComponent、OrderInfoComponent。
如何通过单击按钮提交所有这些组件数据?
有多种方法可以做到这一点。您可以在 https://angular.io/guide/component-interaction 查看有关组件交互的 angular 文档
对于您的情况,一种简单的方法是使用 ViewChild。
@ViewChild(BasicInfoComponent)
private basicInfoComponent: BasicInfoComponent;
@ViewChild(ContactInfoComponent)
private contactComponent: ContactInfoComponent;
@ViewChild(OrderInfoComponent)
private orderComponent: OrderInfoComponent;
然后在按钮中点击,就可以访问那些子组件中的数据了。
使用模型驱动的形式可以很好地实现这一点 easily.I 在 Demo 中创建了一个简单的应用程序。
//our root app component
import {Component, NgModule, Input} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
import { FormBuilder, FormGroup, Validators, FormArray, FormControl } from '@angular/forms';
@Component({
selector: 'my-app',
template: `
<h3>Nested FormGroup</h3>
<form [formGroup]="myForm">
<label>Name: </label>
<input formControlName="name" />
<app-child [address]="myForm.controls.address"></app-child>
</form>
<br>
<pre>Form Values: {{myForm.value | json}}</pre>
`,
})
export class App {
myForm: FormGroup
constructor(private fb: FormBuilder) {}
ngOnInit() {
this.myForm = this.fb.group({
name: [''],
address: this.fb.group({
street: [''],
zip: ['']
})
})
}
}
@Component({
selector: 'app-child',
template: `
<div [formGroup]="address">
<label>Street: </label>
<input formControlName="street"><br>
<label>Zip: </label>
<input formControlName="zip">
</div>
`,
})
export class AppChild {
@Input() address: FormGroup;
}
@NgModule({
imports: [ BrowserModule, FormsModule, ReactiveFormsModule ],
declarations: [ App, AppChild ],
bootstrap: [ App ]
})
export class AppModule {}
我是新手 angular 4.
我有一个包含 3 个部分的页面。这些部分创建为单独的表单
第 1 部分 - 基本信息
first name
last name
email
第 2 部分 - 联系信息
address
city
state
zip
第 3 部分 - 订单信息
Order id
Item name
quantity
这些部分分为不同的组件 - BasicInfoComponent、ContactInfoComponent、OrderInfoComponent。
如何通过单击按钮提交所有这些组件数据?
有多种方法可以做到这一点。您可以在 https://angular.io/guide/component-interaction 查看有关组件交互的 angular 文档 对于您的情况,一种简单的方法是使用 ViewChild。
@ViewChild(BasicInfoComponent)
private basicInfoComponent: BasicInfoComponent;
@ViewChild(ContactInfoComponent)
private contactComponent: ContactInfoComponent;
@ViewChild(OrderInfoComponent)
private orderComponent: OrderInfoComponent;
然后在按钮中点击,就可以访问那些子组件中的数据了。
使用模型驱动的形式可以很好地实现这一点 easily.I 在 Demo 中创建了一个简单的应用程序。
//our root app component
import {Component, NgModule, Input} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
import {FormsModule, ReactiveFormsModule} from '@angular/forms';
import { FormBuilder, FormGroup, Validators, FormArray, FormControl } from '@angular/forms';
@Component({
selector: 'my-app',
template: `
<h3>Nested FormGroup</h3>
<form [formGroup]="myForm">
<label>Name: </label>
<input formControlName="name" />
<app-child [address]="myForm.controls.address"></app-child>
</form>
<br>
<pre>Form Values: {{myForm.value | json}}</pre>
`,
})
export class App {
myForm: FormGroup
constructor(private fb: FormBuilder) {}
ngOnInit() {
this.myForm = this.fb.group({
name: [''],
address: this.fb.group({
street: [''],
zip: ['']
})
})
}
}
@Component({
selector: 'app-child',
template: `
<div [formGroup]="address">
<label>Street: </label>
<input formControlName="street"><br>
<label>Zip: </label>
<input formControlName="zip">
</div>
`,
})
export class AppChild {
@Input() address: FormGroup;
}
@NgModule({
imports: [ BrowserModule, FormsModule, ReactiveFormsModule ],
declarations: [ App, AppChild ],
bootstrap: [ App ]
})
export class AppModule {}