值在$ onInit中设置,但在函数中未定义

时间:2019-03-22 09:56:54

标签: angularjs

我有一个导航到路由器的链接:

ui-sref="dashboard.tasks.overview.details.information({ id: activity.task.id, showTaskDetailView: true })"

在此链接中,我将showTaskDetail: true参数传递给路由器。

在routeconfig中,我有:

.state('dashboard.tasks.overview.details', {
....
    params: {
        showTaskDetailView: null,
    },
    onEnter: [
        '$stateParams',
        'TaskOverviewService',
        (
            $stateParams: any,
            taskOverviewService: TaskOverviewService
        ) => {
            taskOverviewService.setDisplayTaskDetailView($stateParams.showTaskDetailView);
            taskOverviewService.select($stateParams.id);
        }
    ],

输入路线后,它将在setDisplayTaskDetailView中调用TaskOverviewService函数:“

public setDisplayTaskDetailView(showTaskDetailView: boolean) {
    showTaskDetailView$.onNext(showTaskDetailView);
}

这会将showTaskDetailView布尔值推入流中。

navigation-component中,我有:

public $onInit() {
    this.observeTaskUpdates();

    this.showTaskDetailViewObserver = showTaskDetailView$.subscribe(value => {
        this.toggleValue = value;
        console.log(this.toggleValue)
    });
}

public setValue() {
    console.log(this.toggleValue);
}

当我从本文顶部的链接导航时,onInit返回true

在链接到该组件的模板中,我有一个ng-if="vm.setValue()"

但这会将this.toggleValue返回为undefined

我添加了一个count类成员public count = 0并在onInit的值中添加了

 this.count = + 1;
 console.log(this.count);

这显示了1

但是在setValue()函数中,console.log(this.count);返回0

因此,看起来值是在组件的其他实例中设置的。但是该组件只能使用一次。

0 个答案:

没有答案