Angular で親コンポーネントから子コンポーネントを操作したい

Angular で親コンポーネントから子コンポーネントのメソッドを叩いたり、子コンポーネントの状態を参照したりしたい時がある。そんなときには、@ViewChild を使うと上手く操作できる。

親コンポーネントの HTML と、子コンポーネントの実装は通常どおり実装する。

<!-- 親コンポーネントの HTML -->

<!-- 子コンポーネントを配置する -->
<app-child-component [someData]="hoge"></app-child-component>

<!-- 子コンポーネントのメソッドを実行するイベント用のボタン -->
<button (click)="execHoge()">子コンポーネント操作</button>

次に、親コンポーネントのプロパティとして以下のように子コンポーネントを書く。

import { Component, ViewChild } from '@angular/core';

/** 親コンポーネント */
@Component( /* ... */)
class ParentComponent {
  /** 子コンポーネントを読み込む */
  @ViewChild(ChildComponent)
  protected childComponent: ChildComponent;
  
  /** 子コンポーネントのメソッドを実行するイベント */
  execHoge() {
    this.childComponent.someChildComponentMethod();
  }
}

このように、子コンポーネントのメソッドを親コンポーネントから任意のタイミングで実行したり、プロパティを参照したりできる。