ionic4 / angular7 - Как использовать навигационный API при неожиданных прерываниях BLE? - PullRequest
0 голосов
/ 28 мая 2019

Код в разработке работает как на 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 навигации?

1 Ответ

0 голосов
/ 28 мая 2019

Нашли ошибку. У меня был оператор блокировки в методе ngOnDestroy контроллера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...