У меня есть функция, которая выполняется после нажатия кнопки.
async executeAction(action: Action) {
const proceedingReturnView = this.getCurrentView();
this.srv.execute(action, proceedingReturnView);
}
public getCurrentView(): ViewData {
console.log('I am here 1');
const paramMap = this.activatedRoute.snapshot.paramMap;
const queryParamMap = this.activatedRoute.snapshot.queryParamMap;
return ProceedingViewComponent.getCurrentView(paramMap, queryParamMap, 'PODSTAWOWE', false);
}
getCurrentView () читает подробности о текущем представлении, а затем передает его в качестве параметра следующему представлению, поэтому при нажатии кнопки «Назад» я будувернуться к представлению, из которого я выполнил действие.
Метод выполнения службы:
async execute(a: Action, returnView: any) {
console.log('Recived parameters');
console.table(returnView);
const callerViewPath = returnView ? returnView.viewPath : '';
const callerViewParams = returnView ? JSON.stringify(returnView.viewParams) : '';
this.caseSrv.giveActionCall(
a.id,
callerViewPath,
callerViewParams
).subscribe(
wa => {
if (wa.actionType=== 'PORTAL_CHANGE_VIEW') {
console.log('I am here2');
console.log(wa);
this.portalService.changeView(wa.actionName, this.getChangeViewParams(wa));
}
}
);
}
После первого выполнения все работает нормально.Возвращаемые детали представления передаются как callerViewPath и callerViewParams.После того, как я использую стрелку «назад» в моем приложении, оно вернется к точке, откуда я выполнил действие.
Но тогда, когда я пытаюсь выполнить его в другой раз, оба возвращаемых параметра представления являются пустыми, и кажется, что код начался с подписки в методе execute ().Первый вывод в консоли: «Я здесь2».
Я пытался как-то отписаться о разрушении, но сервис всегда «живет» в жизненном цикле приложения.
Я довольно новичок в RxJS.Как я могу решить эту проблему?