Подписчик не назначен на Наблюдаемом создании - PullRequest
0 голосов
/ 20 ноября 2018

Я делаю это в коде для обработки нескольких представлений из нескольких компонентов

https://stackblitz.com/edit/angular-cy8jza (проверьте консоль на наличие ошибки)

export class ViewGroup {
    _onViewChanged: any;
    OnViewChanged$ : Observable<any>;
    _onViewAdded: any;
    OnViewAdded$ : Observable<any>;
    _onViewRemoved: any;
    OnViewRemoved$ : Observable<any>;

    viewsSet = new Set<string>();
    currentView = "";
    previousView = "";

    constructor(){
    this.OnViewChanged$ = Observable.create(obs => this._onViewChanged = obs);
    this.OnViewAdded$ = Observable.create(obs => this._onViewAdded = obs);
    this.OnViewRemoved$ = Observable.create(obs => this._onViewRemoved = obs);
}
}

где-то вкод, который я делаю

this._availableView.set(name,  new ViewGroup());

, а затем набираю

this._availableView.get(group)._onViewAdded.next(view);

, но я не могу назвать следующий номер, скажем, неопределенный.

Это точно так жеПроцедура имеет

this.onGroupAdded$ = Observable.create(e => this._onGroupAdded = e)

, но эта работает в стеке.Это.Я должен сделать это, чтобы все работало:

this.OnViewChanged$ = Observable.create((obs) => {this._onViewAdded = obs});
this.OnViewAdded$ = Observable.create((obs) => {this._onViewAdded = obs});
this.OnViewRemoved$ = Observable.create((obs) => {this._onViewAdded = obs});
this.OnViewChanged$.subscribe();
this.OnViewAdded$.subscribe();
this.OnViewRemoved$.subscribe();

Есть ли способ избежать этого?

1 Ответ

0 голосов
/ 20 ноября 2018

Если я правильно понимаю ваш случай, я думаю, что вы ищете тему.

Вы правы, что наблюдаемые не запускаются, пока не будут подписаны.Вы можете найти много ссылок на это во всех видах документов, например: угловые документы для наблюдаемых .

Таким образом, вместо создания наблюдаемых с помощью метода create.Попробуйте объявить их предметами.Проверьте, как они используются в угловых документах здесь для более подробной информации: https://angular.io/guide/component-interaction#parent-and-children-communicate-via-a-service.

...