当 observable 属性 改变时 Angular2 触发函数
Angular2 trigger function when observable property changes
我使用 workingData
服务保存渗透到我的应用程序中的数据。它 returns Mock workingData
对象的可观察对象。
@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: []
};
可以通过单击 "previous month" 或 "next month" 按钮更新此值:
这会触发 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()
初始化时触发,但不会在值更新时触发。
您可以在您的代码中订阅您的 Observable
this.myObservable.subscribe( data => {
myFunction();
});
如果这不能满足您的需求,那么您必须提供更多代码或您真正需要的一些序列
我使用 workingData
服务保存渗透到我的应用程序中的数据。它 returns Mock workingData
对象的可观察对象。
@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: []
};
可以通过单击 "previous month" 或 "next month" 按钮更新此值:
这会触发 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()
初始化时触发,但不会在值更新时触发。
您可以在您的代码中订阅您的 Observable
this.myObservable.subscribe( data => {
myFunction();
});
如果这不能满足您的需求,那么您必须提供更多代码或您真正需要的一些序列