在Angular 6中动态添加输入字段可以通过以下步骤实现:
下面是一个示例代码:
import { Component, Input } from '@angular/core';
@Component({
selector: 'app-dynamic-input',
template: `
<input [(ngModel)]="value" (ngModelChange)="onChange()">
`
})
export class DynamicInputComponent {
@Input() value: string;
@Input() onChangeCallback: Function;
onChange() {
this.onChangeCallback(this.value);
}
}
import { Component } from '@angular/core';
import { FormBuilder, FormGroup, FormArray } from '@angular/forms';
@Component({
selector: 'app-parent-component',
template: `
<form [formGroup]="form">
<div formArrayName="inputs">
<div *ngFor="let input of inputs.controls; let i = index">
<app-dynamic-input [value]="input.value" [onChangeCallback]="updateValue.bind(this, i)"></app-dynamic-input>
</div>
</div>
<button (click)="addInput()">Add Input</button>
</form>
`
})
export class ParentComponent {
form: FormGroup;
inputs: FormArray;
constructor(private fb: FormBuilder) {
this.form = this.fb.group({
inputs: this.fb.array([])
});
this.inputs = this.form.get('inputs') as FormArray;
}
addInput() {
this.inputs.push(this.fb.control(''));
}
updateValue(index: number, value: string) {
this.inputs.at(index).setValue(value);
}
}
在上面的示例中,我们使用了Angular的表单控件来处理输入字段,并使用FormArray来存储动态添加的输入字段的值。通过ngFor指令循环创建DynamicInputComponent实例,并将输入字段的值绑定到父组件的数组中。
请注意,这只是一个简单的示例,实际应用中可能需要更复杂的逻辑和验证。另外,你可以根据具体需求来调整代码,比如添加删除输入字段的功能、自定义验证等。
推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云云数据库MySQL。你可以在腾讯云官网上找到更多关于这些产品的详细介绍和文档。
腾讯云云服务器(CVM)介绍链接:https://cloud.tencent.com/product/cvm 腾讯云云数据库MySQL介绍链接:https://cloud.tencent.com/product/cdb
领取专属 10元无门槛券
手把手带您无忧上云