3 つ目のコンポーネントを介して、あるコンポーネントから別のコンポーネントにステータスを渡そうとしています。
検証コンポーネント -> 表示 -> リスト
検証コンポーネントがステータスを発行します。View on emit は、ViewChild によって引数を List に渡し、そこで関数を起動する関数を起動します。
問題は、List のレンダリングが長すぎて、発行時の ViewChild がまだ定義されていないことです。AfterViewChecked で ViewChild 自体をチェックしましたが、コンポーネントを返すのに数秒かかります。setTimeout(0) も試しましたが、うまくいきませんでした。
検証 Component.ts
this.onStatusChange.emit('success');
Component.html を表示
<validation-component
(onStatusChange)="updateStatusIcon($event)">
</validation-component>
Component.ts を表示
import { ListComponent } from '../list/list.component'
...
@ViewChild(ListComponent) private listComponent;
...
public updateStatusIcon(status): void {
this.listComponent.setStatusIcon(status);
}
発火時updateStatusIcon()
、this.listComponent
はまだ定義されていません。