Angular 角度FormBuilder不重置数组
每次尝试保存所选项目后,我希望该列表被清除或为空。例如,用户选择一个项目-选择保存。在控制台中,您将查看所选的对象。现在,如果您选择另一个项目并选择save,您仍将看到控制台中选择的上一个项目。最好在每次保存后清除阵列 第一次保存:Angular 角度FormBuilder不重置数组,angular,ionic-framework,ionic2,Angular,Ionic Framework,Ionic2,每次尝试保存所选项目后,我希望该列表被清除或为空。例如,用户选择一个项目-选择保存。在控制台中,您将查看所选的对象。现在,如果您选择另一个项目并选择save,您仍将看到控制台中选择的上一个项目。最好在每次保存后清除阵列 第一次保存: selectedMessages Array(1) {messageID: 222, message: "text"} 第二次保存: selectedMessages Array(2) {messageID: 222, message: "text"} {mess
selectedMessages
Array(1)
{messageID: 222, message: "text"}
第二次保存:
selectedMessages
Array(2)
{messageID: 222, message: "text"}
{messageID: 331, message: "text Two"}
组件技术
rMessages: Message[] = [];
aMessages: Message[] = [];
constructor(
public formBuilder: FormBuilder,
) {
this.messageForm = formBuilder.group({
selectedMessages: this.formBuilder.array([])
})
}
save(form){
console.log(form.value.selectedMessages)
}
select(rmessage:Message, isChecked: boolean){
const selectedMessages = <FormArray>this.messageForm.controls.selectedMessages;
if(isChecked) {
selectedMessages.push(new FormControl(rmessage));
} else {
let index = selectedMessages.controls.findIndex(x => x.value.messageID == rmessage.messageID);
selectedMessages.removeAt(index);
}
}
buildChecked() {
const arr = this.rMessages.map(message => {
console.log(this.formBuilder.control(message.messageID))
return this.formBuilder.control(message.messageID)
});
return this.formBuilder.array(arr);
}
rMessages:Message[]=[];
A消息:消息[]=[];
建造商(
公共formBuilder:formBuilder,
) {
this.messageForm=formBuilder.group({
selectedMessages:this.formBuilder.array([])
})
}
保存(表格){
console.log(form.value.selectedMessages)
}
选择(rmessage:Message,isChecked:boolean){
const selectedMessages=this.messageForm.controls.selectedMessages;
如果(已检查){
selectedMessages.push(新表单控件(rmessage));
}否则{
让index=selectedMessages.controls.findIndex(x=>x.value.messageID==rmessage.messageID);
selectedMessages.removeAt(索引);
}
}
buildChecked(){
const arr=this.rMessages.map(消息=>{
console.log(this.formBuilder.control(message.messageID))
返回此.formBuilder.control(message.messageID)
});
返回此.formBuilder.array(arr);
}
HTML
{{rmessage.message}
拯救
已更新-带复位功能,不起作用。正在获取空值
rMessages: Message[] = [];
aMessages: Message[] = [];
constructor(
public formBuilder: FormBuilder,
) {
this.messageForm = formBuilder.group({
selectedMessages: this.formBuilder.array([])
})
}
save(form){
this.rMessages = this.rMessages.filter((resultTwo) => {
return !form.value.receivedMessages.find((resultOne) => {
return resultTwo.messageID === resultOne.messageID
})
})
this.aMessages = this.aMessages.concat(form.value.receivedMessages.filter((resultOne) => {
console.log(resultOne, 'results')
return resultOne
}))
this.messageForm.reset()
}
select(rmessage:Message, isChecked: boolean){
const selectedMessages = <FormArray>this.messageForm.controls.selectedMessages;
if(isChecked) {
selectedMessages.push(new FormControl(rmessage));
} else {
let index = selectedMessages.controls.findIndex(x => x.value.messageID == rmessage.messageID);
selectedMessages.removeAt(index);
}
}
buildChecked() {
const arr = this.rMessages.map(message => {
console.log(this.formBuilder.control(message.messageID))
return this.formBuilder.control(message.messageID)
});
return this.formBuilder.array(arr);
}
rMessages:Message[]=[];
A消息:消息[]=[];
建造商(
公共formBuilder:formBuilder,
) {
this.messageForm=formBuilder.group({
selectedMessages:this.formBuilder.array([])
})
}
保存(表格){
this.rMessages=this.rMessages.filter((resultTwo)=>{
return!form.value.receivedMessages.find((resultOne)=>{
返回resultTwo.messageID==resulttone.messageID
})
})
this.aMessages=this.aMessages.concat(form.value.receivedMessages.filter)((resultOne)=>{
console.log(resulttone,'results')
返回结果音
}))
this.messageForm.reset()
}
选择(rmessage:Message,isChecked:boolean){
const selectedMessages=this.messageForm.controls.selectedMessages;
如果(已检查){
selectedMessages.push(新表单控件(rmessage));
}否则{
让index=selectedMessages.controls.findIndex(x=>x.value.messageID==rmessage.messageID);
selectedMessages.removeAt(索引);
}
}
buildChecked(){
const arr=this.rMessages.map(消息=>{
console.log(this.formBuilder.control(message.messageID))
返回此.formBuilder.control(message.messageID)
});
返回此.formBuilder.array(arr);
}
您可以清除表单
this.messageForm.reset()
当您想清除数组并将其设置为空时,文本将保留在控制台中,请使用
setControl()
这将替换现有数组。如果只在数组中放入一个元素,那么使用该数组有什么意义?选择“保存”时,将为消息获取空值。似乎重置使我的对象未定义你能用相关代码更新你的帖子吗?确保在记录/获取值后调用reset。所有映射运算符都可能缺少某些内容。您可以尝试在save方法中注释所有代码,只记录输入,然后执行重置吗?从那里开始,如果它在重新设置后仍会记录
this.messageForm.reset()
this.messageForm.setControl('selectedMessages', this.formBuilder.array([]))