【发布时间】:2017-04-22 22:49:54
【问题描述】:
我使用workingData 服务来保存渗透到我的应用程序中的数据。它向 Mock workingData 对象返回一个 observable。
@Injectable()
export class WorkingDataService {
getWorkingData(): Observable<WorkingData> {
return Observable.of(WORKINGDATA);
}
getSelectedDate(): Observable<Date> {
return Observable.of(WORKINGDATA.selectedDate);
}
}
workingData 对象的一个属性是一个名为 selectedDate 的日期字段。
export const WORKINGDATA: WorkingData = {
today: new Date(),
selectedDate: new Date('11-15-2016'),
targetDate: new Date(),
data: []
};
这会触发cal-nav 组件中的以下函数(或对应的incrementDate()):
decrementDate(): void {
let newDate = new Date(this.workingData.selectedDate.getDate());
newDate.setMonth(newDate.getMonth() - 1);
this.workingData.monthPrior = newDate;
}
observable 更新了注入workingDate 服务的所有组件中的视图,但我现在需要在month 组件(它是cal-nav 组件的兄弟)中触发一个函数。 每次更新workingData.selectedDate时如何触发month组件中的函数,即使它是从不同的组件更新的?
更新:我现在单独订阅 selectedDate 属性。
ngOnInit(): void {
this.getWorkingData();
this.getSelectedDate(); // Just added
}
getSelectedDate(): void{
this._workingDataService.getSelectedDate().subscribe(selectedDate => {this.myFunc();});
}
myFunc(){
console.log('working');
}
这会触发myFunc() oninit,但不会在值更新时触发。
【问题讨论】:
标签: javascript angular typescript observable angular2-changedetection