Javascript 当可观测属性发生变化时,Angular2触发函数
我使用一个Javascript 当可观测属性发生变化时,Angular2触发函数,javascript,angular,typescript,observable,angular2-changedetection,Javascript,Angular,Typescript,Observable,Angular2 Changedetection,我使用一个workingData服务来保存渗透到我的应用程序中的数据。它向模拟工作数据对象返回一个可观察值 @Injectable() export class WorkingDataService { getWorkingData(): Observable<WorkingData> { return Observable.of(WORKINGDATA); } getSelectedDate(): Observable<Date> { ret
workingData
服务来保存渗透到我的应用程序中的数据。它向模拟工作数据
对象返回一个可观察值
@Injectable()
export class WorkingDataService {
getWorkingData(): Observable<WorkingData> {
return Observable.of(WORKINGDATA);
}
getSelectedDate(): Observable<Date> {
return Observable.of(WORKINGDATA.selectedDate);
}
}
可通过单击“上个月”或“下个月”按钮更新此值:
这将触发cal nav
组件中的以下函数(或它的incrementDate()
对应项):
decrementDate(): void {
let newDate = new Date(this.workingData.selectedDate.getDate());
newDate.setMonth(newDate.getMonth() - 1);
this.workingData.monthPrior = newDate;
}
observable更新了注入了工作日期
服务的所有组件中的视图,但我现在需要触发月
组件中的函数(它是校准导航
组件的同级)如何在每次工作数据时触发月
组件内的功能。即使从其他组件更新,也会更新selectedDate
?
更新:我现在分别订阅selectedDate
属性
ngOnInit(): void {
this.getWorkingData();
this.getSelectedDate(); // Just added
}
getSelectedDate(): void{
this._workingDataService.getSelectedDate().subscribe(selectedDate => {this.myFunc();});
}
myFunc(){
console.log('working');
}
这会在Init上激发
myFunc()
onit,但不会在值更新时激发。您只需在代码中订阅您的可观测值即可
this.myObservable.subscribe( data => {
myFunction();
});
如果这不能满足您的需要,那么您必须提供更多的代码或您确切需要的某些序列我不想触发函数,除非特定属性发生更改,而不是整个对象。有没有办法做到这一点?是的,单独观察该属性。这足够吗?创建一个可观察的对象,持有您的属性并订阅它。我以为我已经做到了
getSelectedDate()
。我必须如何更改代码?查看我的更新服务
this.myObservable.subscribe( data => {
myFunction();
});