Передача данных в родительский компонент в Angular
Можно передавать данные из дочернего компонента
в родительский. Это делается путем испускания
событий с помощью специального объекта EventEmitter
и метода emit
. Дочерний компонент будет
испускать события, передавая вместе с событием
некоторые данные, а родительский компонент
будет ловить события, получая данные
из родительского компонента.
Давайте попробуем на практике. Для этого
нам нужно проделать ряд шагов.
Для начала в наш дочерний компонент импортируем
декоратор @Output
и класс
EventEmitter
:
import { Component, Output, EventEmitter } from '@angular/core';
Теперь в дочернем классе сделаем
свойство onData
, значением
которого будет новый объект EventEmitter
,
содержащий строку:
export class UserComponent {
@Output()
public onData = new EventEmitter<string>();
}
Теперь сделаем метод send
,
вызов которого будет испускать событие
onData
в родительский компонент
с заданным текстом:
export class UserComponent {
@Output()
public onData = new EventEmitter<string>();
send() {
this.onData.emit('xxx');
}
}
В темплейте дочернего компонента
сделаем кнопку, по клику на которую
будет вызываться метод send
:
<button (click)="send()">
send data
</button>
В родительском компоненте сделаем
метод onData
, который будет
автоматически вызываться, когда
из дочернего компонента будет
испущено соответствующее событие.
В параметр метода будут попадать
переданные данные:
export class AppComponent {
public onData(data: string) {
console.log(data);
}
}
В темплейте родительского компонента привяжем к тегу дочернего компонента событие:
<app-user (onData)="onData($event)"></app-user>
В дочернем компоненте сделайте три кнопки, испускающие различные события. Поймате испущенные события в родительском компоненте.