Наблюдаемый дочерний компонент не инициализирован с помощью ngIf - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть CompA. CompA имеет в детстве CompB. CompB имеет условие ngIf и на основе наблюдаемой, которая разделяется между CompA и CompB, загружает некоторые данные. Когда я устанавливаю это условие как истинное, я вызываю следующее для наблюдаемой из CompA, но данные не отображаются. CompB еще не инициализирован, так что он подписывается на наблюдаемую вот код:

//compA.html
<div>
...
<button (click)="switchToCompB()">Show</button>
<compB *ngIf="compBVisible"></compB>

</div>


//compA.ts
public switchToCompB() {
        this.compBVisible = !this.compBVisible;

        if (this.compBVisible)
            this.sharedObservable.next(message);
}

// compB.ts
ngOnInit(){
    this.sharedObservable.subscribe(message => {
        ...some code here
    })
}

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 27 апреля 2018

Я изменил тему для поведения. Таким образом, значение всегда есть для susbcribers. Таким образом, даже если CompB подписан после установки условия, он всегда получает самое последнее значение

0 голосов
/ 25 апреля 2018

Вы должны использовать привязку событий @Input.

// compA.html
<button (click)="switchToCompB()">Show</button>
<compB *ngIf="compBVisible" [myInput] = "someInputValue"></compB>

//compB.ts

export class SomeClass{
 @Input myInput: any;
 ngOnInit(){
 // some code here to execute during component initialisation
 }

 ngOnChanges(change: SimpleChanges){

 //some code here to be executed whenever the input value changes
 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...