Ответ 1
Попробуйте этот код:
this.navCtrl.setRoot(this.navCtrl.getActive().component);
Есть ли способ обновить только страницу, то есть только один экран в ionic2.
Я пробовал:
window.location.reload();
и
location.reload();
но он перестраивает приложение.. есть ли способ обновить только эту страницу (конкретный экран).
Также попытался:
<ion-input *ngIf="no_internet === 1" (click)="refresh($event)"></ion-input>
в TypeScript:
refresh(refresher) {
console.log('Begin async operation', refresher);
setTimeout(() => {
console.log('Async operation has ended');
refresher.complete();
}, 2000);
}
Попробуйте этот код:
this.navCtrl.setRoot(this.navCtrl.getActive().component);
Вы также можете использовать ионный повтор, чтобы создать действие для обновления на странице
http://ionicframework.com/docs/v2/api/components/refresher/Refresher/
Если вы согласны следовать общему соглашению, я нашел очень простой способ перезагрузить текущее представление (включая все его параметры). Я тестировал это с помощью Ionic3, но он должен по-прежнему применяться в Ionic 2
Переместите весь код инициализации для каждой страницы в ionViewDidLoad()
, который запускается ONCE при первом загрузке представления
import { Component } from '@angular/core';
import { NavController, NavParams } from 'ionic-angular';
import { Api } from '../../providers/api';
import { Movie } from '../../interfaces/movie';
@Component({
selector: 'page-movie-info',
templateUrl: 'movie-info.html'
})
export class MovieInfoPage {
constructor(
public navCtrl: NavController,
public navParams: NavParams,
public api: Api
) {
}
/**
* Run all page initialization in this method so that this page
* can be refreshed simply by re-calling this function
*/
ionViewDidLoad() {
//access any parameters provided to the page through navParams.
var movieId = this.navParams.data.movieId;
this.api.movies.getById(movieId).then((movie) => {
this.movie = movie;
});
}
public movie: Movie;
}
Из любого места в приложении вы можете перезагрузить текущее представление с помощью этого кода
//get the currently active page component
var component = this.navController.getActive().instance;
//re-run the view load function if the page has one declared
if (component.ionViewDidLoad) {
component.ionViewDidLoad();
}
Я бы сделал это: (на основе ответа @Ahmad Aghazadeh)
this.navCtrl.push(this.navCtrl.getActive().component).then(() => {
let index = this.viewCtrl.index;
this.navCtrl.remove(index);
})
= > Нажмите эту страницу еще раз (загрузите ее снова)
= > Удалить страницу, на которой мы были (с помощью индекса)
Попробуйте следующее: $window.location.reload(); $route.reload() use to reload route.
если вы используете $stateProvider : $state.go($state.current, {}, {reload: true})
;
или
var currentPageTemplate = $route.current.templateUrl;
$templateCache.remove(currentPageTemplate);
$route.reload();