Angular Service Observable第二次不会触发组件订阅
发布时间:2020-12-17 17:55:14 所属栏目:安全 来源:网络整理
导读:我正在尝试订阅服务主题的组件,以确保组件订阅在服务发射上运行. 问题是订阅命中率仅在第一次订阅后也没有达到第二次附加的可观察返回0订阅. 以下是代码: export class StoreService { private storesList : SubjectArrayKeyValuestring = null; constructo
我正在尝试订阅服务主题的组件,以确保组件订阅在服务发射上运行.
问题是订阅命中率仅在第一次订阅后也没有达到第二次附加的可观察返回0订阅. 以下是代码: export class StoreService { private storesList : Subject<Array<KeyValue<string>>> = null; constructor(private http: Http,private _uService: UserService) { this.storesList = new Subject<Array<KeyValue<string>>>(); } loadStores(): void{ this.getAllStores().subscribe(m=>{ debugger; this.storesList.next(m); }); } storeListEvent(): Observable<Array<KeyValue<string>>>{ return this.storesList.asObservable(); } } 虽然组件是. export class HeaderNavComponent implements OnInit,AfterViewInit,OnDestroy { private storeUpdateSubscription = null; constructor(private _userService: UserService,private cdRef: ChangeDetectorRef,private _storeService: StoreService,private router: Router,private location: Location) { this.storeUpdateSubscription = this._storeService.storeListEvent().subscribe(stores => { debugger; this.appStore = stores; this.verifySuperAdmin(); }); } 目的是每次都在组件中调用上面的订阅 调用Store Service – loadStores时 解决方法
您正在应用反模式:永远不会在同一服务中订阅服务调用.您必须返回调用,组件必须订阅此Observable.
无论如何,由于storeList是一个主题,你可以简化这样做: this.getAllStores().subscribe(this.storesList); 因为一个主体也是一个观察者 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |