ngif比较两个数组

时间:2018-12-20 17:16:15

标签: html angular typescript

我的组件中有两个数组

arr1 = ["one", "two"]
arr2 = ["one", "two"]

在我的html中,我正在使用ngIf

*ngIf="!isEnabled && arr1 != arr2"

isEnabled可以正常工作,但是当比较两个数组时,即使它们在开始时设置为相等,它始终显示它们不相等。

arr1将根据服务而改变,但我确认该服务已在更改阵列

2 个答案:

答案 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()"