web-dev-qa-db-ja.com

Angular 2(Ionic 2)ページが表示されるたびにページ内の関数を呼び出す

angular 2(ionic 2)アプリのホームページが読み込まれるたびに、サービス/関数を呼び出します。これを達成する方法は?

アプリがロードされたとき(ホームページがロードされたとき)に初めてこれをconstructorに書き込むことができますが、ユーザーがアプリを使い始めたときPush新しいページをnav controllerおよびpopそれらはhome pageconstructorは再度呼び出されません。

私はここで立ち往生しています。

この機能を実現するための最良の方法を知りたいのですが?

私は初めてですangular2およびionic2framework(また、angular1およびionic1)、助けてください。

とても感謝しています。

更新

私が試したもののサンプルコードですが、機能しませんでした。

import {Page, NavController, Platform, Storage, SqlStorage} from 'ionic-angular';

@Page({
  templateUrl: 'build/pages/page1/page1.html'
})
export class Page1 {
    static get parameters(){
        return [[NavController],[Platform]];
    }
    ngOnInit() {
        console.log("Showing the first page!");
    }
    constructor(nav, platform){
        this.nav = nav;
        this.platform =  platform;
    }
}
7
Dipak

onPageWillEnter()は私のために働いた。

import {Page, NavController, Platform, Storage, SqlStorage} from 'ionic-angular';


@Page({
  templateUrl: 'build/pages/page1/page1.html'
})
export class Page1 {
    static get parameters(){
        return [[NavController],[Platform]];
    }
    onPageWillEnter() {
        console.log("Showing the first page!");
    }
    constructor(nav, platform){
        this.nav = nav;
        this.platform =  platform;
    }
}

イオンライフサイクルフック

8
Dipak

IONIC 2 RC1更新

ionViewWillEnter() {
    console.log("this function will be called every time you enter the view");
}
6
Romanow

lifeCycle-hooks 、具体的にはngOnInit()またはngAfterViewInit()を活用できます。

ここ は簡単なチュートリアルです。

例:

// Annotation section
@Component({
  selector: 'street-map',
  template: '<map-window></map-window><map-controls></map-controls>',
})
// Component controller
class StreetMap {
  ngOnInit() {  //here you can call the function wanted
    // Properties are resolved and things like
    // this.mapWindow and this.mapControls
    // had a chance to resolve from the
    // two child components <map-window> and <map-controls>
  }
}

更新:純粋なAngular2アプリケーション、IonicFramework固有のソリューションについては、を参照してください

@ DeepakChandranPの回答。

1
Ankit Singh