在Angular6中,我正在使用@Input()从父级向客户端获取变量值
@Input() orderdata: OrderData;
,并使用[ngModel]和(ngModelChange)函数绑定到字段。
在子组件中,当用户更改此变量值(绑定)时,我需要进行比较新值和旧值的验证。该怎么做?
我尝试将orderdata分配给新变量
oldorderdata = orderdata;
,然后再执行比较。但是,当用户更改订单数据时,旧订单数据本身也会随之更改。
答案 0 :(得分:1)
通常,当您在JS中彼此分配对象时,您并不是在分配它们的值,而是在分配它们的内存引用。
这就是为什么更改orderdata
时oldorderdata
也将更改的原因,因为它指向内存中的同一对象。
为防止这种情况,您可以像这样在ES6中使用扩展运算符(...
):
oldorderdata = {...orderdata};
这会将订单数据的所有属性传播到oldorderdata对象中。
答案 1 :(得分:0)
变量通常会发生变化,因为您将其与[[ngModel)]绑定在一起,要进行比较,您需要将变量绑定到比较函数的输出上