Angular 在可观察创建时未分配订阅服务器
我在代码中这样做是为了处理来自多个组件的多个视图 (检查控制台中的错误) 然后打电话Angular 在可观察创建时未分配订阅服务器,angular,events,rxjs,observable,Angular,Events,Rxjs,Observable,我在代码中这样做是为了处理来自多个组件的多个视图 (检查控制台中的错误) 然后打电话 this._availableView.get(group)._onViewAdded.next(view); 但我不能打电话给下一个,它是说未定义 这完全是相同的程序 this.onGroupAdded$ = Observable.create(e => this._onGroupAdded = e) 但这一个在stackblitz中有效 EDIT:我发现我在create中传递的方法在我订阅之前不
this._availableView.get(group)._onViewAdded.next(view);
但我不能打电话给下一个,它是说未定义
这完全是相同的程序
this.onGroupAdded$ = Observable.create(e => this._onGroupAdded = e)
但这一个在stackblitz中有效
EDIT:我发现我在create中传递的方法在我订阅之前不会被调用。我必须这样做才能让一切顺利:
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();
有什么办法可以避免吗 如果我正确理解你的情况,我想你要找的是一个主题 你是对的,观测值在订阅之前不会运行。你可以在各种各样的文档中找到很多关于它的引用,例如:
因此,不要使用create方法来创建观察值。试着将它们声明为主题。查看angular文档中如何使用它们,以了解更多详细信息:。我查看了此文档,但我认为我对它的解释是错误的,因为我重新实现了所有内容,它工作起来很有魅力。。。我关闭了另一个帖子,因为你解决了booth的问题。非常感谢。
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();