Код в разработке работает как на Android, так и на iOS, используются фреймворки Angular7 и ionic4, а также плагин Cordova BLE.
После неожиданного сбоя соединения приложение должно вернуться к корневому URL / домашнему экрану, что и происходит. Но после этого невозможно перейти на от с главного экрана, и приложение застряло.
До сих пор я установил, что событие навигации действительно срабатывает и что базовый плагин BLE все еще работает и устанавливает новое соединение при попытке переподключения.
Согласно инструментам разработчика Google Chrome, DOM очищает все оставшиеся страницы, как и следовало ожидать.
Кроме того, я установил, что все сервисы с глобальным состоянием полностью сбрасываются.
Я пытался обновить angular и ionic до последней версии, но это не имеет значения.
Этот фрагмент кода вызывается как обратный вызов для (щелчка) -События от некоторого s
this.communicatorService.connect(device).subscribe(
peripheral => {
console.debug('CONNECTED');
this.zone.run(() => {
this.navCtrl.navigateForward('/connected').then(
_ => console.debug('NAVIGATED')
);
});
},
error => {
console.error(error);
this.resetState();
this.zone.run(() => {
this.navCtrl.navigateBack('/').then(
_ => console.debug('NAVIGATED BACK')
)
});
}
);
То, что я ожидаю, это прочитать CONNECTED и NAVIGATED на консоли и затем наблюдать переход страницы.
Это только в случае до приложение неожиданно потеряло соединение BLE.
После потери соединения я могу прочитать 'NAVIGATED BACK' на консоли. При попытке переподключиться к устройству BLE выполняется фрагмент кода, и я могу прочитать CONNECTED и NAVIGATED, но переход страницы не происходит.
В этом случае я правильно использую API навигации?