Указанная вами ссылка устарела. На мой взгляд, использование viewChild полезно, когда мы хотим использовать метод или функцию дочернего элемента (*) или изменить его аспект. Для управления переменной, FormGroup или formControl лучше всего использовать @Input.
Помните, что когда мы передаем объект дочернему элементу во входном элементе, существует уникальный объект, поэтому родительский и дочерний элементы имеют значение, когда происходит любое изменение - в дочерних элементах или в родительских - например, если мы передаем FormGroup, вы можете пометить как затронутые, удалить / добавить валидаторы, использовать setValue ... из родительского или дочерних форм. Что касается @Input, то верно, что если у вас есть «фиксированный ввод» - вы передаете переменную, которая не изменяется - как
<child greet="Hello word"></child>
Вы должны использовать @ Атрибут в конструкторе, а НЕ на входе
constructor(@Attribute('greet') greet){}
(*) вы можете использовать вход с установщиком, но в этом случае мне больше нравится использовать viewChild или ссылку на переменную