我有以下angularJS组件:
export function setDisplayTaskDetailView(showTaskDetailView: boolean): void {
if (showTaskDetailView !== null && window.device.mobile()) {
showTaskDetailView$.onNext(showTaskDetailView);
}
}
@Component('TaskHandling', {
selector: 'task-overview-detail',
templateUrl: '/TaskHandling/_Overview/TaskOverviewSomething.html'
})
class TaskOverviewComponent {
public showTaskDetailView: boolean;
$onInit() {
this.observeTaskUpdates();
}
private observeTaskUpdates(): void {
showTaskDetailView$
.subscribe(value => {
this.showTaskDetailView = value;
});
}
}
从我的路线上,我有:
Xyz.TaskHandling.setDisplayTaskDetailView(params.showTaskDetailView);
当用户导航到上述路线时,它将true / false值传递给组件中的setDisplayTaskDetailView
函数。
该组件将值传递到流中,而在我订阅的流中,该组件将值传递给类成员。当我在订阅内部记录this.showTaskDetailView
时,我会得到通过路由传递的值。
但是,当我在this.showTaskDetailView
内登录$onInit
时,得到的是不确定的。在$ onInit的日志中添加setTimeout不会更改该值,因此它看起来不像是计时问题,而更像是范围问题。
有什么建议吗?
//编辑。当我将setTimeout添加到setDisplayTaskDetailView
函数时,该值已在类内部正确设置。