Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 在可观察创建时未分配订阅服务器_Angular_Events_Rxjs_Observable - Fatal编程技术网

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();