Я пытаюсь вызвать функцию дочернего компонента из родительского компонента в моем угловом приложении, но получаю ошибку
В моем родительском компоненте (называемом компонентом slices
) дочерний элемент здесь является компонентом snd-canvas:
<snd-canvas #yourChild
*ngIf="isCanvasOpen"
[selectedSlice]="selectedSlice"
[parentComponent]="parentComponent">
</snd-canvas>
В родительском компоненте также есть кнопка, которую я хочу вызвать функцией saveSlice () в дочернем компоненте:
<div *ngIf="!showSearchBar && isCanvasOpen">
<button mat-icon-button
matTooltip="Save Slice"
(click)="yourChild.saveSlice()">
...icon...
</button>
</div>
В slice.component.ts у меня есть
import { Component, OnInit, ViewChild } from '@angular/core';
@ViewChild('yourChild') child;
Однако, когда я нажимаю кнопку, я получаю следующую ошибку:
ERROR TypeError: Cannot read property 'saveSlice' of undefined
Я полагаю, что проблема может заключаться в том, что при загрузке компонента слайсов isCanvasOpen инициализируется как false, и, таким образом, компонент snd-canvas
еще не отображается и не определен. Я попытался изменить *ngIf="isCanvasOpen"
на [hidden]="isCanvasOpen"
, который исправил эту ошибку, но вызвал кучу проблем с дочерним элементом с функцией NgInit и другими функциями, работающими не по порядку. Как я могу это исправить?