Если вы используете * ngIf , чтобы скрыть свой ChildComponent, он не будет читать ваш @ViewChild (ChildComponent), поскольку ngIf означает, что вы опускаете что-то в вашей DOM, которое не будет физически видимым.
Принимая во внимание, что если вы используете [скрытый] в вашем ChildComponent, он будет скрыт в вашем DOM, но все еще существует в вашем шаблоне и вашем @ViewChild(ChildComponent) сможет прочитать его.
<child [hidden]="true"></child> // Try using [hidden] rather than *ngIf