Я создал сервис, который обменивается данными между компонентами, следуя ответу, предоставленному SrAxi .Все работает нормально, пока в компоненте-получателе я не реализую подписку на тему: ответ и ничего внутри этого метода подписки не отображается, ни простой console.log из строки;похоже, что Angular вообще не входит в этот метод.
Я пытался сделать подписку на OnInit, AfterViewInit и AfterContentInit: ничего не изменилось.Также используется setTimeOut ();ничего.
Затем я нашел ответ Юлиуса Дзидзявичюса , а затем изменил тему на поведениеSuject и подписался на нее;опять ничего не изменилось.
Это сводит меня с ума, надеюсь, вы могли бы помочь
Код: Компонент отправителя
private actionsInfoObj = {
fromAction: null,
showForm: null,
data: null
};
.....
addNewRow() {
this.actionsInfoObj.fromAction = 'addRow';
this.actionsInfoObj.showForm = true;
this.bus.actionInfo(this.actionsInfoObj);
this.addRow.emit( this.actionsInfoObj );
}
Служба (ButtonsUtilitiesService)
getActionInfo$: Observable<any>;
private getActionInfoSubject = new Subject<any>();
constructor() {
this.getActionInfo$ =
this.getActionInfoSubject.asObservable();
}
actionInfo(data) {
console.log(data);
this.getActionInfoSubject.next(data);
}
Компонент получателя
constructor(
private fb: FormBuilder,
private bus: ButtonsUtilitiesService
) {
this.bus.getActionInfo$.subscribe( (data: object) => {
this.actionInfo = data;
})
}
РЕДАКТИРОВАТЬ: забыл сказать, что (на данный момент) и отправитель и получатель находятся в одном и том же родительском элементекомпонент:
<section *ngIf="!showForm ">
<div>
<app-table (addRow)="addRow($event)"></app-table>
</div>
</section>
<section *ngIf="showForm" class="mat-elevation-z8">
<div>
<app-dynamic-form></app-dynamic-form>
</div>
</section>