我在按下按钮时尝试按下数组中的数据,再次按下按钮时将其从数组中删除(并更改按钮类)。
<button
*ngFor="#color of colors"
[class.selected]="color === selectedColors"
(click)="onPress(color)">
{{color.name}}
</button>
我在课堂上放了两种方法 - onPress&amp; hasColor
onPress(color: Color) {
this.selectedColors = color;
// ckecking color in array
if (this.hasColor(this.colorsArray,this.selectedColors.id)) {
//need to splice a color from array and change background color to default (to blue color)
} else {
// if not in colorsArray then push and change class to .selected
this.colorsArray.push(this.selectedColors.id);
}
}
hasColor(arrayC,id) {
arrayC.forEach(function(item) {
if (item === id) {
return true;
}
return false;
});
}
我该怎么办? hasColor方法返回true或false但在onPress方法中永远不会返回
答案 0 :(得分:2)
hasColor方法返回true或false
不,它没有。
您传递给forEach
的匿名函数会返回true
或false
(对循环中的每个项都会这样做。)
hasColor
函数根本没有自己的return语句。
如果你想在你的for循环中查看任何项是否匹配,那么你需要使用一个变量来跟踪你是否有任何匹配,然后在循环之后返回该变量结束。
hasColor(arrayC, id) {
var match = false;
arrayC.forEach(function(item) {
if (item === id) {
match = true;
}
});
return match;
}