У меня есть ссылка, которая ведет к маршрутизатору:
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
и добавил 1 кзначение в onInit
this.count = + 1;
console.log(this.count);
Это показывает 1
Но в setValue()
функция console.log(this.count);
возвращает 0
Таким образом, похоже, что значенияустанавливается в другом экземпляре компонента, но компонент используется только один раз.