我的组件中有两个数组
arr1 = ["one", "two"]
arr2 = ["one", "two"]
在我的html中,我正在使用ngIf
*ngIf="!isEnabled && arr1 != arr2"
isEnabled可以正常工作,但是当比较两个数组时,即使它们在开始时设置为相等,它始终显示它们不相等。
arr1将根据服务而改变,但我确认该服务已在更改阵列
答案 0 :(得分:3)
您实际上不能这样做,而不是在模板中进行比较,您应该有一个函数,该函数将在比较后返回布尔值,然后将其绑定到模板
*ngIf="!isEnabled && compareArrays()"
和
compareArrays(){
let result = array1.length == array2.length &&
array1.every(function(element, index) {
return element === array2[index];
});
return result;
}
答案 1 :(得分:1)
仅使用!=
总是会导致true
,因为它们是不同的对象,所以永远不会相等。
除非它们是同一数组的两个引用。如:
realArray = ['stuff'];
arr1 = realArray;
arr2 = realArray;
假设数组是两个不同的对象,可以使用以下几种方法比较数组:How to compare arrays in JavaScript? ...
您最好在函数中说“ compareArrays()”的组件上执行此操作,并获得布尔响应
*ngIf="!isEnabled && compareArrays()"