We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ng官网在讲组件通讯时,给出了3种方案,第三种是利用rxjs的观察订阅模式。其中有如下代码块
import { Injectable } from '@angular/core'; import { Subject } from 'rxjs'; @Injectable() export class MissionService { // Observable string sources private missionAnnouncedSource = new Subject<string>(); private missionConfirmedSource = new Subject<string>(); // Observable string streams missionAnnounced$ = this.missionAnnouncedSource.asObservable(); missionConfirmed$ = this.missionConfirmedSource.asObservable(); // Service message commands announceMission(mission: string) { this.missionAnnouncedSource.next(mission); } confirmMission(astronaut: string) { this.missionConfirmedSource.next(astronaut); } }
我们注意到在创建subject对象后利用asObservable进行了转换,查看源码,返回类型为observable。但是要知道subject本身就是一类特殊的observable,兼具observable和observer的性质,本身也可以订阅。 如下这样是可以的。
看Subject实现细节,我们会明白它多了closed等一些信息,而这些observable是没有的。所以只有当我们需要隐藏内部实现细节,只关心改变的值时,我们就需要这个转换。但是比如我们利用subject了解这个订阅关闭没关闭等,这就需要subject才可以了。
其实这个疑问在网上也有类似的讨论,戳这里
The text was updated successfully, but these errors were encountered:
#64
c5d9318
No branches or pull requests
ng官网在讲组件通讯时,给出了3种方案,第三种是利用rxjs的观察订阅模式。其中有如下代码块
我们注意到在创建subject对象后利用asObservable进行了转换,查看源码,返回类型为observable。但是要知道subject本身就是一类特殊的observable,兼具observable和observer的性质,本身也可以订阅。
![image](https://user-images.githubusercontent.com/9245110/43526275-627a60c6-95d6-11e8-843e-3b4e6dbe72a9.png)
如下这样是可以的。
这里的asObservable转换还有必要吗?
看Subject实现细节,我们会明白它多了closed等一些信息,而这些observable是没有的。所以只有当我们需要隐藏内部实现细节,只关心改变的值时,我们就需要这个转换。但是比如我们利用subject了解这个订阅关闭没关闭等,这就需要subject才可以了。
![image](https://user-images.githubusercontent.com/9245110/43525927-9646dd36-95d5-11e8-8b80-b7c32190beed.png)
其实这个疑问在网上也有类似的讨论,戳这里
The text was updated successfully, but these errors were encountered: