2017-12-06 2 views
0

Dies ist meine Fußzeile Komponente. Ich rufe einige Seiten von der Fußzeile wie folgt auf. Wenn ich auf die Fußzeile klicke, wird die veraltete Komponente geladen. Ich debuggte es und fand heraus, dass es nicht den Konstruktor der Komponente aufruft (wo ich die Ladelogik habe, um die Daten zu aktualisieren). Ich habe zweimal aus der Fußzeile klicken, um die Komponente aufrufen, um die korrekten Daten zu erhaltenIonic 2 lädt die veraltete Komponente

tab-footer.component.html 

    <ion-tabs> 
    <ion-tab [root]="home" tabIcon="md-home" 
    [rootParams]="homeparams"></ion-tab> 
    <ion-tab [root]="alertsPage" tabIcon="md-notifications-outline"> 
    </iontab> 
    <ion-tab [root]="flagged" tabIcon="flag"></ion-tab> 
    </ion-tabs> 


    @Component({ 
    selector: 'app-tab-footer', 
    templateUrl: './tab-footer.component.html', 
    styleUrls: ['./tab-footer.component.scss'] 
    }) 
    export class TabFooterComponent { 

    home = HomeComponent; 
    alertsPage = AlertsComponent; 
    flagged = FlaggedComponent; 
    homeparams: any; 

    constructor(public navparam: NavParams) { 
    this.homeparams = navparam; 
    } 

} 

Hier ist meine eine der Komponenten, die von Fußzeile aufgerufen wird

@Component({ 
selector: 'app-flagged', 
templateUrl: './flagged.component.html', 
    styleUrls: ['./flagged.component.scss'] 
}) 
export class FlaggedComponent { 

    someData1: any; 
    someData:any[] = []; 

    someObj = {} 

constructor(public someService: SomeServiceService, 
    public exampleService: ExampleService, 
    public navParams: NavParams, 
    public navCtrl: NavController) { 

    // some loading logic 
    } 

Kann mir jemand helfen, warum es herauszufinden, ruft Konstruktor nicht jedes Mal auf? Muss ich eine Eigenschaft angeben, um sie frisch zu laden? Danke

+0

Wie die Navigation durch das TabFooterComponent ausgelöst wird? – nipuna777

+0

Dies ist nicht genug Informationen, um Ihr Problem zu reproduzieren. Kannst du entweder ein komplettes minimales Beispiel oder Event besser in ein [stackblitz] (https://stackblitz.com/) –

+0

übernehmen? Ich werde –

Antwort

1

den Lebenszyklus Event hinzufügen ionViewDidEnter oder ionViewWillEnter auf Ihre FlaggedComponent Klasse und Ihre Aktualisierung oder Ladelogik aus dem Konstruktor in eine dieser Methoden bewegen.

ionViewDidEnter() { 
    console.log('the page has entered'); 
} 

ionViewWillEnter() { 
    console.log('the page is about to enter'); 
} 

ionViewDidEnter aufgerufen wird, wenn die Seite vollständig eingegeben hat und nun die aktive Seite. Dieses Ereignis wird ausgelöst, unabhängig davon, ob es sich um die erste oder eine zwischengespeicherte Seite handelte.

ionViewWillEnter wird aufgerufen, wenn die Seite eingegeben wird und die aktive Seite wird.

Referenz: https://ionicframework.com/docs/api/navigation/NavController/#lifecycle-events

Verwandte Themen