Проблема в том, что вы обновляете значение в родительском компоненте только один раз, в ngAfterViewInit
:
ngAfterViewInit() {
this.currentMsgFromChild = this.child1.currentMsgToParent;
}
Поэтому в родительском представлении всегда отображается начальное значение, которое является пустой строкой.
С другой стороны, когда свойство родительского компонента установлено в массив дочернего компонента, оба свойства ссылаются на один и тот же массив. Когда массив изменяется, два компонента могут получить доступ к обновленным значениям. Вы бы имели такую же ситуацию, если бы два компонента совместно использовали ссылку на объект, а дочерний ввод был связан со свойством этого объекта (см. this stackblitz ).
Стандартным способом обновления родительского элемента является привязка события со свойством @Output
, но если вы хотите обратиться непосредственно к дочернему компоненту в коде, вы можете определить свойство родительского компонента как получатель. Это обеспечит актуальность отображаемого в представлении значения.
get currentMsgFromChild() {
return this.child1 ? this.child1.currentMsgToParent : "";
}
См. этот стек * блиц для демонстрации.