Вы можете использовать EventEmitter или Subject. В таких случаях рекомендуется использовать тему.
Вы можете использовать сервис для обмена передаваемыми значениями:
import {Injectable, EventEmitter} from '@angular/core';
import { Subject } from 'rxjs';
@Injectable({
providedIn : 'root'
})
export class AppService {
constructor() {
}
public emitter: Subject<string> = new Subject<string>(); // Subject
// public emitter : EventEmitter<string> = new EventEmitter(); // Event Emitter
getEmittedValue() {
return this.emitter;
}
Ваш образец дочернего шаблона:
<button (click)="go('From Child')">Emit</button>
Ваш образец дочернего компонента ( Не забудьте внедрить службу, которую я создал выше):
go(message: string) {
console.log('Button Clicked ', message);
this.appService.emitter.next(message); // Subject
// this.appService.emitter.emit(); // Event Emitter
}
Теперь пора где угодно использовать выводимые данные дочернего компонента. Просто введите сервис, который я создал выше, в любое место, где вы хотите, чтобы выдаваемое значение было выдано, и подпишитесь на Subject или Event Emitter:
constructor(private appsService: AppService) {
this.appsService.getEmittedValue().subscribe(res => this.ekMethod(res));
}