глубокая проверка изменений, аналогичная $watchCollection в Angular2

Я использую массив объектов, которые я передаю от родительского компонента к дочерним компонентам. Когда новый элемент помещается в массив или изменяется свойство одного из существующих объектов в массиве, это не вызывает ngOnChanges для компонентов, которые используют эту переменную (родительские/дочерние/одноуровневые компоненты).

В AngularJS у нас было $watchCollection, с помощью которого мы могли следить за сложными объектами. Есть ли у нас что-то подобное для Angular2+?

Как сделать глубокую проверку, аналогичную $watchCollection в Angular2+?

Я знаком с AngularJS, но не с Angular2+.

ОБНОВЛЕНИЕ:
Следуя предложению @Shirish Patel здесь, я обнаружил, что хотя изменение в переменная отражается везде, но функция ngOnChanges не срабатывает. Почему это так? Мне нужно запустить эту функцию, чтобы я мог обрабатывать другие операции по изменению значения.


person Temp O'rary    schedule 26.10.2017    source источник
comment
эта ссылка на stackoverflowk может вам помочь.   -  person Shirish Patel    schedule 26.10.2017


Ответы (1)


Не помещайте объекты в свой массив, так как мутация не вызовет хук жизненного цикла ngOnChanges. Вроде как rxjs DifferentUntilChanged, нужен новый массив, а не модифицированный.

Вам нужно предоставить входные данные для новой версии вашего массива:

this.array = [...this.array, itemWhichNeedsAdding]

Приведенное выше возвращает новый экземпляр массива и запускает обнаружение изменений.

person rtn    schedule 27.10.2017