Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度FormBuilder不重置数组_Angular_Ionic Framework_Ionic2 - Fatal编程技术网

Angular 角度FormBuilder不重置数组

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

每次尝试保存所选项目后,我希望该列表被清除或为空。例如,用户选择一个项目-选择保存。在控制台中,您将查看所选的对象。现在,如果您选择另一个项目并选择save,您仍将看到控制台中选择的上一个项目。最好在每次保存后清除阵列

第一次保存:

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([]))