ViewChild - это компонент, директива или элемент как часть шаблона. Если мы хотим получить доступ к дочернему компоненту, директиве, элементу DOM внутри родительского компонента, мы используем декоратор @ViewChild () в Angular.

Чтобы понять это, предположим, что у нас есть два компонента: дочерний и родительский. Поскольку дочерний компонент может находиться внутри родительского компонента, доступ к нему можно получить как @ViewChild.

В приведенном выше коде мы импортировали декоратор @ViewChild, а затем импортировали обработчик жизненного цикла AfterViewInit и реализовали его. Теперь, чтобы изменить значение свойства, мы можем использовать только что созданное представление, например:

ngAfterViewInit () {
this.chviewChild.message = «Измененное значение View Child»
}

Будет выведено значение Измененное значение View Child, но будет выдана ошибка «Выражение было изменено после последней проверки».

Для обработки этой ошибки мы используем обнаружение изменений с помощью ChangeDetectorRef.

Здесь мы импортировали ChangeDetectorRef из ‘@ angular / core’ и внедрили его в конструктор. Мы также вызвали метод detectChanges ().

Это было для одного дочернего элемента, расположенного внутри шаблона компонента, но что в случае, когда у нас есть несколько ссылок на дочерний элемент?
Именно тогда в игру вступает @ViewChildren.

Изменение шаблона,

Наконец, пометив ссылку ViewChildren типом QueryList,

Теперь мы можем обновить значение свойства сообщения, используя Viewchildren внутри ловушки жизненного цикла ngAfterViewinit () следующим образом:

this.chviewChildren.forEach ((item) = ›{item.message =‘ Обновлено значение ’;});

Давайте теперь посмотрим на окончательный код:

Это дает нам результат в виде: