Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.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
Javascript 如何避免在使用Angular2保存数据之前,将弹出窗口中输入的数据反射到表中_Javascript_Angular_Typescript - Fatal编程技术网

Javascript 如何避免在使用Angular2保存数据之前,将弹出窗口中输入的数据反射到表中

Javascript 如何避免在使用Angular2保存数据之前,将弹出窗口中输入的数据反射到表中,javascript,angular,typescript,Javascript,Angular,Typescript,我有一个编辑弹出窗口,当弹出窗口打开,我编辑,它反映在表上。我必须避免反射,一旦我点击保存按钮,那么只有编辑的部分必须显示在表上。我只能对一个输入执行此操作,我不知道如何对其他两个输入执行相同的操作 //Ts 组件上必须有两个不同的属性,引用两个不同的对象实例。做几件事: 步骤1:单击“编辑”,复制表格行(所有道具),并将其置于模式中。保留引用,例如您正在编辑的表行或_id或其他内容 在您的情况下,向TutorialComponent添加一个名为currentlyEditing:any的属性。然

我有一个编辑弹出窗口,当弹出窗口打开,我编辑,它反映在表上。我必须避免反射,一旦我点击保存按钮,那么只有编辑的部分必须显示在表上。我只能对一个输入执行此操作,我不知道如何对其他两个输入执行相同的操作

//Ts


组件上必须有两个不同的属性,引用两个不同的对象实例。做几件事:

步骤1:单击“编辑”,复制表格行(所有道具),并将其置于模式中。保留引用,例如您正在编辑的表行或_id或其他内容

在您的情况下,向TutorialComponent添加一个名为
currentlyEditing:any
的属性。然后,修改editTutorial方法:

editTutorial(tutorial) {
  this.editTutorials.show();
  this.currentlyEditting = tutorial;
}
第2步:编辑那些不应反映在表上的内容。继续编辑你的东西

步骤3:保存后,将更改同步回表,或者更确切地说,同步回表中显示的原始数据集。这就是为什么您需要步骤1中的参考


现在,我不清楚您的编辑组件是否是保存更改的组件。但如果是的话,我想一切都会按原样进行。如果没有,您必须在保存并响应“success”后,在
tutorials
数组中找到原始教程,并将其替换为已编辑的组件。

您正在将
tutorial
值从表中发送到
edit\u tut
变量中,该变量用作
双向绑定

因此,表中的数据随着您的输入而改变。

解决方案可以是更改
变量引用
,您可以执行以下操作:

editTutorial(tutorial) {
 this.editTutorials.show();
 let tut = JSON.parse(JSON.stringify(tutorial))
 this.edit_tut = tut;
}

这将更改
值引用
,并对您有效。

是的,我已经完成了这些操作,但我想保持表格不变,而不反映我打字时的情况,但显然您没有这样做。你能显示整个组件文件吗?是的,我已经更新了完整的ts文件,请看一下
editTutorial(tutorial) {
 this.editTutorials.show();
 let tut = JSON.parse(JSON.stringify(tutorial))
 this.edit_tut = tut;
}