我有一个导航到路由器的链接:
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
因此,看起来值是在组件的其他实例中设置的。但是该组件只能使用一次。