Вначале я вижу "А", а затем я загрузил несколько вещей из API. Теперь, когда по нажатию кнопки, я перехожу к представлению «B», а затем, когда по нажатию кнопки «назад» (кнопка «железо» / навигационная панель назад), я возвращаюсь к представлению A, но содержимое представления A уже уничтожено, и загружается только простое представление.
window.history.back();
Итак, я нашел способ, т. Е. При каждой загрузке представления, я добавил его в свой массив состояний localalstorage. и когда я нажал назад, я вернулся в предыдущее состояние.
this.router.navigate([previousState]);
Но это работает только при нажатии кнопки моей навигационной панели. При жестком нажатии на кнопку я возвращаюсь назад, но мое состояние не выбирается снова.
Мой код:
@Injectable()
export class AppStateService {
private menuOpen: boolean = false;
private headerTitle: string = "";
private offlineState: boolean = false;
public constructor(private router: Router) {
document.addEventListener("backbutton", () => {
this.back(true);
}, false);
}
public back(hardwareClick?: boolean): void {
var routes: string[] = [
'Login',
'Main'
];
for (var i of routes) {
var route = this.router.generate([i]);
if (this.router.isRouteActive(route)) {
this.exitApp();
return;
}
}
var previousState = CordovaService.getPreviousState();
this.router.navigate([previousState]);
}
Визуальный пример:
хотя от B до A отлично работает, когда кнопка навигации назад навигационной панели
В чем может быть проблема?