Я не уверен, что выбрал правильный путь в этом, но я нашел относительно простое решение, которое, кажется, работает. Проблема с моим «вариантом 2» заключается в том, что установка переменной недостаточна, поскольку обнаружение углового изменения просто скопирует значение в целевой компонент, но никакие методы для загрузки нового набора ответов не будут вызываться.
Итак, я сделал следующее. HTML-код такой же, как и раньше:
<app-replies *ngIf="replies" [doc]="replies"></app-replies>
Затем в компоненте используйте ключевое слово set , чтобы перехватить изменения и ответить следующим образом:
@Input() set doc(doc: JsonPo) {
this._doc = doc;
this.fetchReplies();
}
_doc: JsonPo;
Теперь, когда я устанавливаю переменную в вызывающем компоненте, вызывается метод fetchReplies () без необходимости ссылаться на компонент с помощью декоратора ViewChild . (У которого проблемы в этом случае).
Кроме того, больше нет необходимости вызывать fetchReplies () в ngOnInit () , потому что он будет вызываться, когда каркас создает экземпляр компонента, когда-то между тем, когда конструктор заканчивается и вызывается ngOnInit () .
Я надеюсь, что это поможет кому-то еще в этой ситуации. Я не видел подобных примеров кода при поиске.