我在全球服务中有一些对象。其中一个组件使用套接字并更新此对象,但其他组件不会进行任何更改。
PlanService
@Injectable()
export class PlanService {
private subject = new Subject<any>();
private planSubject = new Subject<any>();
public planList;
constructor( private socket: SocketClientService) {
this.socket.on('plan');
}
第一个组件更新planList
constructor(
private planService: PlanService,
private socket: SocketClientService,
public projectsService: ProjectsService,
private groupsService: GroupsService,
private calendarShare: CalendarDateShareService,
) {
this.socket.on('plan');
this.planService.getUserBusy().distinctUntilChanged().subscribe((data) => {
planService.planList = data; /* update */
});
第二个组件应该监听和更新
planService.planList
我是Angular 2的新手
答案 0 :(得分:1)
您可以将planList变成一个主题,就像你在那里的私人成员一样。
@Injectable()
export class PlanService {
...
public planList = new Subject<any>();
...
}
然后使用next传递一个新值:
...
this.planService.getUserBusy().distinctUntilChanged().subscribe((data) =>
{
this.planService.planList.next(data); /* update */
});
...
然后您可以订阅任何其他组件/服务中的planList更改
...
this.planService.planList.subscribe(data => {
console.log(data) // planList Data
});