订阅范围不在组件范围内

时间:2019-02-18 13:41:27

标签: angularjs

我有以下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函数时,该值已在类内部正确设置。

0 个答案:

没有答案