Подписка на тему ничего не делает - PullRequest
0 голосов
/ 04 октября 2018

Я создал сервис, который обменивается данными между компонентами, следуя ответу, предоставленному 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>
...