@Input变量分配的变量也会更改分配的变量

时间:2018-08-23 18:07:46

标签: angular input

在Angular6中,我正在使用@Input()从父级向客户端获取变量值

@Input() orderdata: OrderData;

,并使用[ngModel]和(ngModelChange)函数绑定到字段。

在子组件中,当用户更改此变量值(绑定)时,我需要进行比较新值和旧值的验证。该怎么做?

我尝试将orderdata分配给新变量

oldorderdata = orderdata; 

,然后再执行比较。但是,当用户更改订单数据时,旧订单数据本身也会随之更改。

2 个答案:

答案 0 :(得分:1)

通常,当您在JS中彼此分配对象时,您并不是在分配它们的值,而是在分配它们的内存引用。

这就是为什么更改orderdataoldorderdata也将更改的原因,因为它指向内存中的同一对象。

为防止这种情况,您可以像这样在ES6中使用扩展运算符(...):

oldorderdata = {...orderdata};

这会将订单数据的所有属性传播到oldorderdata对象中。

答案 1 :(得分:0)

变量通常会发生变化,因为您将其与[[ngModel)]绑定在一起,要进行比较,您需要将变量绑定到比较函数的输出上