Angular: ViewChild получает уведомление о событии от ребенка - PullRequest
0 голосов
/ 02 августа 2020

В настоящее время используется ViewChild в Angular для связи родительского компонента с дочерним компонентом. Хотелось бы знать, когда кто-то нажал кнопку в дочернем компоненте.

Родительский компонент:

@ViewChild(ChildProductComponent) childProductComponent: ChildProductComponent;

Дочерний компонент:

<mat-button
    (click)="findProduct()"
>
   Find Product
</mat-button>

findProductOutput.emit();

Я использую эмиттер вывода событий, но это кажется ненужным.

Уже есть ViewChild Настройка, похоже, я добавляю еще один канал связи, когда он не требуется.

Есть ли способ для Родителя получать уведомление от Viewchild при нажатии кнопки дочернего компонента? Без ввода / вывода или услуг? В противном случае я просто буду придерживаться метода Output.

1 Ответ

0 голосов
/ 02 августа 2020

Если вы хотите использовать метод связи @ViewChild, вам необходимо также включить функцию ngAfterViewInit (), чтобы убедиться, что дочерний компонент существует, прежде чем пытаться получить доступ к каким-либо его свойствам или функциям.

В родительском include:

import { Component, ViewChild, AfterViewInit } from '@angular/core';
childButtonPressed: boolean;

ngAfterViewInit() {
    this.childButtonPressed = this.child.buttonPressed;
}

И в записи дочернего компонента, когда кнопка действительно нажата:

buttonPressed: boolean = false;

findProduct() {
   this.buttonPressed = true;
   // rest of code
}    

Эта ссылка показывает все доступные методы для родительского / ребенок общение в Angular.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...