我有以下服务
@Injectable({
providedIn: 'root'
})
export class MyService {
private mySubject = new BehaviorSubject({});
public currentData = this.mySubject.asObservable();
updateData(data: any) {
this.mySubject.next(data);
}
}
我有一个组件,其中的组件已与Observable
以下:
export class MyComponent implements OnInit {
constructor(private myService: MyService) { }
ngOnInit() {
this.myService.currentData.subscribe(data => /* some logic here */);
}
}
我还有另一个组件可以调用服务的updateData
方法。
export class AnotherComponent {
constructor(private myService: MyService) { }
onClick(data) {
this.myService.updateData(data);
}
}
我期望.subscribe
中定义的MyComponent
将在this.myService.updateData
内的AnotherComponent.onClick
调用中被调用,但不会。我可以确认Observable确实有一个订阅者,正如您期望的那样,给定了代码。
答案 0 :(得分:0)
在this.myService.currentData.subscribe(data => /* some logic here */);
中定义的闭包引发了未捕获的异常,这将阻止在随后的.next()
调用中再次调用此闭包。修复异常源(或使用try...catch
)解决了该问题。