#cordova #ionic2 #observable
#кордова #ionic2 #наблюдаемый
Вопрос:
Я использую сетевой собственный плагин для определения состояния сети (подключен или нет) и для обнаружения изменения состояния сети (OnConnect и onDisconnect).
Я хочу отключить некоторые кнопки при отключении сети, а также хочу включить их, когда у меня восстановится соединение. Поэтому сетевой плагин имеет 2 функции, называемые OnConnect и onDisconnect, которые возвращают наблюдаемое. при подписке на эти функции я хочу изменить переменную класса с именем «isConnected». Приведенный ниже код показывает, что я хочу управлять этим.
...
constructor(...){
....
// network
this.isConnected = Network.connection !== "none";
this.connectSubscription = Network.onConnect().subscribe(()=>{
this.updateConnection();
Toast.showShortBottom("connected now !").subscribe();
});
this.disconnectSubscription = Network.onDisconnect().subscribe(()=>{
this.updateConnection();
Toast.showShortBottom("disconnected now !").subscribe();
});
}
updateConnection(){
this.isConnected = Network.connection !== "none";
}
и мой html-файл содержит несколько кнопок, которые должны быть включены / отключены в зависимости от состояния соединения «isConnected»..
...
<button ion-button icon-only [disabled]="!isConnected" (click)="openModal()" shortVibrateOnTap>
<ion-icon ios="ios-swap" md="ios-swap"></ion-icon>
</button>
...
<ion-col width-10>
<button ion-button icon-only class="arrow-btn" [disabled]="!isConnected amp;amp; onLastQuestion" (click)="fireSth()" shortVibrateOnTap>
<ion-icon *ngIf="!onLastQuestion" ios="ios-arrow-forward" md="ios-arrow-forward"></ion-icon>
<ion-icon *ngIf="onLastQuestion" ios="ios-arrow-dropright-circle-outline" md="ios-arrow-dropright-circle-outline"></ion-icon>
</button>
</ion-col>
...
теперь срабатывают функции OnConnect и onDisconnect, но мои кнопки не отключаются сразу… Сначала я должен нажать на кнопку или выполнить другое действие … Как я могу заставить представление обновить статус кнопки?????
запуск ionic 2 rc 1
Ответ №1:
ApplicationRef, похоже, делает то же самое, что и здесь. Но я все еще не понимаю, почему это происходит ..