我在使用 Angular 4 时遇到了很多困难(对我来说很新)......
我的问题:
我有一个表格,在这个表格中,用户可以添加一些新字段(当他点击 btn 时) - 它可以是任意数量的字段。为此,我在表单组件中生成了一个新组件(每次单击时)。
我在 ts 中有:
export class FormComponent {
@ViewChild('container', {read: ViewContainerRef}) container:ViewContainerRef;
// this fires on click of the use which wants to add some fields
public addComponent() {
@Component({templateUrl: './pathToHtml'})
class TemplateComponent {}
@NgModule({declarations: [TemplateComponent], imports: [CommonModule, FormsModule]})
class TemplateModule {}
const mod = this.compiler.compileModuleAndAllComponentsSync(TemplateModule);
const factory = mod.componentFactories.find((comp) =>
comp.componentType === TemplateComponent
);
const component = this.container.createComponent(factory);
}
}
在 html 中,每个组件都有单独的模板 - FORM 组件和 TEMPLATE 组件。
表格中的样本:
<form action="" (ngSubmit)="save(configHeadersForm.form)" #configHeadersForm="ngForm">
<input type="text" class="form-control" name="test" ngModel required/>
</form>
来自模板的样本:
<input type="text" name="test2" ngModel>
如果我打印 form.value (我输入输入字段'asddffd'),在保存功能的表单类(在提交时触发并且应该有表单数据),我有:
Object { "test": 'asddffd'}
所以只有来自 FORM 模板的值,而不是来自生成的组件(test2)的值。有什么想法,漂亮吗?:)