gpt4 book ai didi

javascript - 可观察属性更改时的 Angular2 触发函数

转载 作者:太空狗 更新时间:2023-10-29 18:16:51 26 4
gpt4 key购买 nike

我使用 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: []
};

可以通过单击“上个月”或“下个月”按钮来更新此值: enter image description here

这会触发 cal-nav 组件中的以下函数(或者它是 incrementDate() 的对应函数):

decrementDate(): void {
let newDate = new Date(this.workingData.selectedDate.getDate());
newDate.setMonth(newDate.getMonth() - 1);
this.workingData.monthPrior = newDate;
}

Observable 更新了注入(inject)了 workingDate 服务的所有组件中的 View ,但我现在需要在 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();
});

如果这不能满足您的需求,那么您必须提供更多代码或您真正需要的一些序列

关于javascript - 可观察属性更改时的 Angular2 触发函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41026860/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com