Angular Connect 2017 演示中介绍了用于实现嵌套表单的 ControlValueAccessor 组合。
在本次演示中,演讲者展示了一种实现具有多个值的自定义表单控件的方法(不仅是单个字符串值,而且有两个字符串字段,如街道和城市)。我想实施它,但我被困住了。示例应用程序在这里,有人知道我应该纠正什么吗?
https://stackblitz.com/edit/angular-h2ehwx
父组件
@Component({
selector: 'my-app',
template: `
<h1>Form</h1>
<form [formGroup]="form" (ngSubmit)="onSubmit(form.value)" novalidate>
<label>name</label>
<input formControlName="name">
<app-address-form formControlName="address"></app-address-form>
<button>submit</button>
</form>
`,
})
export class AppComponent {
@Input() name: string;
submitData = '';
form: FormGroup;
constructor(private fb: FormBuilder) {
this.form = fb.group({
name: 'foo bar',
address: fb.group({
city: 'baz',
town: 'qux',
})
});
}
onSubmit(v: any) {
console.log(v);
}
}
Run Code Online (Sandbox Code Playgroud)
嵌套表单组件
@Component({
selector: 'app-address-form',
template: `
<div [formGroup]="form">
<label>city</label>
<input formControlName="city" (blur)="onTouched()">
<label>town</label>
<input …Run Code Online (Sandbox Code Playgroud)