По умолчанию обнаружение изменений Angular проходит по вашему массиву и проверяет, было ли изменение ссылки на предыдущее изменение.Теперь вы не изменили ни одной ссылки, только свойство этих объектов.Поскольку ссылка на объект в вашем массиве не изменяется, Angular не распознает, что произошло изменение.Я рекомендую использовать неизменяемые операторы, которые не изменяют предыдущий объект, но создают новый:
removeFromList(obj){
this.valmap = this.valmap
.map(element => {
return {category: element.category, values: element.values.filter(fruit => fruit.name !== obj.name)}
})
.filter(element => element.values.length > 0)
}
Другой вариант - ввести trackBy
в свой ForngFor`, чтобысообщить Angular, когда свойство изменилось.