with reference(strncpy()
),我在表单中有20个字段,如果用户单击重置选项,我需要重设表单,但排除2个字段,如果正在使用this.form.reset()表示它重置了所有内容,任何帮助表示赞赏
答案 0 :(得分:1)
您可以遍历FormGroup
的控件,并且如果控件名称与排除列表中的控件名称匹配,则无需重置它:
const exclude: string[] = ['formControlName1', 'formControlName2'];
Object.keys(this.form.controls).forEach(key => {
if (exclude.findIndex(q => q === key) === -1) {
this.form.get(key).reset();
}
});
答案 1 :(得分:1)
您可以为重置功能提供重置值。只需将两个字段的值赋给它,其余的应该为空。
public class Product
{
public string Name { get; set; }
public int Price { get; set; }
}
private async void Form1_Load(object sender, EventArgs e)
{
// Define list
var list = new List<Product>();
// Fill data
list.Add(new Product { Name = "Product 1", Price = 100 });
list.Add(new Product { Name = "Product 2", Price = 200 });
// Set data source of data grid view
var bs = new BindingSource();
bs.DataSource = list;
this.dataGridView1.DataSource = bs;
// Automatically update text box, by SUM of price
textBox1.Text = $"{list.Sum(x => x.Price):F2}";
bs.ListChanged += (obj, args) =>
textBox1.Text = $"{list.Sum(x => x.Price):F2}";
}
答案 2 :(得分:1)
您可以使用Key作为formControl,将value作为您希望控件在重置时具有的值,将对象传递给reset函数。
this.form.reset({
fomrControl1:value1,
formControl2:value2
});
如果要更改字段的行为(例如禁用或启用),只需传入一个Object而不是一个值即可。例如:
this.form.reset({
fomrControl1:{value:value1, disabled:true}, // disables this field on reset
formControl2:value2
});
答案 3 :(得分:0)
只需查看onReset()
方法。此代码将重置name
和description
字段以外的所有内容
formGroup: FormGroup = /* init the formGroup... */
onReset() {
this.formGroup.reset({
name: this.formGroup.get('email').value,
description: this.formGroup.get('description').value
});
}
答案 4 :(得分:0)
我将保留这两个输入值,重置表格,然后再次对这两个输入进行修补。
const keepValues = [
this.form.controls.keepThis1.value,
this.form.controls.keepThis2.value,
];
this.form.reset();
this.form.controls.keepThis1.patchValue(keepValues[0]);
this.form.controls.keepThis2.patchValue(keepValues[1]);
答案 5 :(得分:0)
嘿,让函数reset()
并使用以下语法重置18
字段。
resetForm(){
this.form.controls.formField1.reset("");
this.form.controls.formField2.reset("");
.
.
this.form.controls.formField18.reset("");
}
谢谢。