Я думаю, что вы можете достичь этого, используя eventEmitter, он уведомит ваш второй компонент, как только вы нажмете кнопку, вам просто нужно подписаться на источник событий .
Вариант 1 между компонентами
Вы сделаете это в компоненте, который вы хотите вызвать изменение
Импорт
import { Injectable, EventEmitter } from '@angular/core';
Declare
@Output()variableEvent: EventEmitter<any> = new EventEmitter();
Установить значение, которое вы хотите изменить
public sendChange(){
this.variableEvent.emit(value);
}
Добавьте это в шаблон компонента, для которого вы хотите получить значение
<child (sendChange)="getValue($event)"></child>
Добавьте эту строку в ваш component.ts
private getValue($event){
//Get the value
}
Вариант 2 с использованием услуги
export class Service {
public change: EventEmitter<any> = new EventEmitter();
public setdata(value) {
this.change.emit(value);
}
}
Компонент, который устанавливает данные
export class SetDataComponent {
constructor(private service: Service) {}
private setData(){
this.service.setData(value);
}
}
Компонент, который будет получать данные
export class GetDataComponent {
constructor(private service: Service) {}
private getData()
{
this.service.change.subscribe(value => {
let dataRecieve = value;
});
}
}
Преимущество генератора событий заключается в том, что как только событие происходит, оно уведомляет все компоненты, на которые подписаны.