Angular 收听服务角度2/4中的变量更新
我在全球服务中有一些目标。其中一个组件使用套接字并更新此对象,但另一个组件未得到任何更改 计划服务Angular 收听服务角度2/4中的变量更新,angular,sockets,service,rxjs,angular2-services,Angular,Sockets,Service,Rxjs,Angular2 Services,我在全球服务中有一些目标。其中一个组件使用套接字并更新此对象,但另一个组件未得到任何更改 计划服务 @Injectable() export class PlanService { private subject = new Subject<any>(); private planSubject = new Subject<any>(); public planList; constructor( private socket: Sock
@Injectable()
export class PlanService {
private subject = new Subject<any>();
private planSubject = new Subject<any>();
public planList;
constructor( private socket: SocketClientService) {
this.socket.on('plan');
}
第二个组件应该侦听并更新
planService.planList
我是Angular 2的新手你可以把你的计划列表变成一个主题,就像你的私人成员一样
@Injectable()
export class PlanService {
...
public planList = new Subject<any>();
...
}
然后,您可以订阅任何其他组件/服务中的planList更改
...
this.planService.planList.subscribe(data => {
console.log(data) // planList Data
});
没有简单的方法可以仅仅监视变量的更改,您必须以某种方式触发更改事件(通过事件发射器)或使用可观察的包装器。下面是一个简单的事件发射器示例:看起来您刚刚将一个新值设置为
planList
变量。它不能被“监听”,当planList
值更改时,应通知第二个组件,如ngOnChanges
。但如果有更多的组件在值发生变化时需要通知,那么最好将planList
转换为可观察的
...
this.planService.getUserBusy().distinctUntilChanged().subscribe((data) =>
{
this.planService.planList.next(data); /* update */
});
...
...
this.planService.planList.subscribe(data => {
console.log(data) // planList Data
});