从子组件向表单添加输入
Add Inputs to a Form from a Child Component
我正在尝试根据传入的数据生成输入。每个输入都是它们自己的组件,以便稍后 modifications/functionality。
然后有一个表单处理器,其中包含一个按钮,单击该按钮可与表单所具有的内容一起使用。
我遇到的问题是,当我点击一个按钮来处理它时,我得到了表单,但是所有的值都是空的,我在表单中看不到任何东西,甚至让它看起来像是识别了输入在那里。
根格式:
<form #inputForm="ngForm">
<div *ngFor="let d of data">
<app-input [name]="d.name" [label]="d.label"></app-input>
</div>
</form>
<app-form-processor [inputForm]="inputForm"></app-form-processor>
输入Class:
<label>{{label}}</label>
<div>
<input [(ngModel)]="name" [name]="name">
</div>
表单处理器:
<button (click)="processForm()">Process</button>
表单处理器(部分代码):
@Input() inputForm: NgForm;
generateStatement() {
console.log(this.inputForm);
}
控制台日志只有一个没有任何值的 ngForm(以及 ngForm 具有的默认值之外的几乎所有其他内容)
请注意,如果我将输入 class 的内容直接粘贴到 ngForm 中(而不是使用子组件),它工作正常,但我想使用子组件如果可能的话。
按照 Antoniosss 的建议,我查阅了 ControlValueAccessor 并找到了这个教程,它让我开始工作。
https://medium.com/@tarik.nzl/angular-2-custom-form-control-with-validation-json-input-2b4cf9bc2d73
我正在尝试根据传入的数据生成输入。每个输入都是它们自己的组件,以便稍后 modifications/functionality。
然后有一个表单处理器,其中包含一个按钮,单击该按钮可与表单所具有的内容一起使用。
我遇到的问题是,当我点击一个按钮来处理它时,我得到了表单,但是所有的值都是空的,我在表单中看不到任何东西,甚至让它看起来像是识别了输入在那里。
根格式:
<form #inputForm="ngForm">
<div *ngFor="let d of data">
<app-input [name]="d.name" [label]="d.label"></app-input>
</div>
</form>
<app-form-processor [inputForm]="inputForm"></app-form-processor>
输入Class:
<label>{{label}}</label>
<div>
<input [(ngModel)]="name" [name]="name">
</div>
表单处理器:
<button (click)="processForm()">Process</button>
表单处理器(部分代码):
@Input() inputForm: NgForm;
generateStatement() {
console.log(this.inputForm);
}
控制台日志只有一个没有任何值的 ngForm(以及 ngForm 具有的默认值之外的几乎所有其他内容)
请注意,如果我将输入 class 的内容直接粘贴到 ngForm 中(而不是使用子组件),它工作正常,但我想使用子组件如果可能的话。
按照 Antoniosss 的建议,我查阅了 ControlValueAccessor 并找到了这个教程,它让我开始工作。
https://medium.com/@tarik.nzl/angular-2-custom-form-control-with-validation-json-input-2b4cf9bc2d73