2017-07-11 4 views
0

Aus irgendeinem Grund bekomme ich die Funktion zweimal aufgerufen und ich kann nicht herausfinden, warum.ngOnInit und Konstruktor werden zweimal aufgerufen

Ich sehe diese Frage hier

why ngOnInit called twice?

die in diesem Github Ausgabe verweist

https://github.com/angular/angular/issues/6782

Aber das scheint ich Import der Datei an mehreren Stellen vorzuschlagen, die ich don Ich glaube nicht, dass es so ist.

So weit ich weiß, nutze ich die lonic loading von Ionic 3. Hier

ist ein Link zu einem abgespeckten GitHub Repo können Sie lokal ausführen, das Problem zu sehen (ich bin traurig, dass ich nicht den besten Weg, herauszufinden, bekommt dies in Plunker zu laufen oder codepen)

https://github.com/Jordan4jc/ionic-init-example

das Konzept hat der Haupt-App zunächst aus dem laden ein Token laden, dann überprüfen, und wenn es nach wie vor gültige Route zum EventsPage aber wenn es nicht ist würde es den Weg zu einem LoginPage

In diesem Beispiel I fälschen Sie es und tun Sie nur so, als ob der Token gültig ist und gehen Sie zum EventsPage, wie Sie in der ngOnInit Funktion sehen (und Ereignis, wenn ich es in den Konstruktor the console.log verschieben wird zweimal aufgerufen. Dies wird meinen Server treffen, um die neuesten Daten zu erhalten, so dass ich meine API nicht zweimal treffen möchte.

EDIT: Dies ist der Inhalt in den app.component.ts

import { Component } from '@angular/core'; 
import { Platform } from 'ionic-angular'; 
import { StatusBar } from '@ionic-native/status-bar'; 
import { SplashScreen } from '@ionic-native/splash-screen'; 
import {Storage} from '@ionic/storage'; 

@Component({ 
    templateUrl: 'app.html' 
}) 
export class MyApp { 
    rootPage:any; 
    constructor(platform: Platform, statusBar: StatusBar, splashScreen: SplashScreen, storage: Storage) { 
    platform.ready().then(() => { 
     storage.ready().then(()=>{ 
     // pretend we loaded a JWT and verified it 
     this.rootPage = 'EventsPage'; 
     }); 
     splashScreen.hide(); 
    }); 
    } 
} 
+0

Könnten Sie bitte den Inhalt Ihres 'app.component.ts' Codes hinzufügen? – sebaferreras

+0

@sebaferreras Ich habe den Beitrag mit dem Inhalt der Datei 'app.component.ts' bearbeitet – Jordan

Antwort

1

Ich glaube, ich die Antwort gefunden zu haben.

fand ich diese Frage auf Stack-Überlauf

why ngOnInit called twice?

Eine Antwort eine Vorlage Kompilierungsfehler Bezug genommen wird, und die restlichen Antworten Scrollen durch eine verweist auch die Tatsache, dass, wenn eine Taste ohne eine in der Vorlage vorhanden ist Explizit type="button" Es kann als Senden Schaltfläche von Ihrem Browser behandelt werden und daher die App den Code mehrmals ausführen. Das Hinzufügen dieses Attributs zu den Schaltflächen, die ich in meiner App gefunden habe und die es nicht hatte, scheint das Problem gelöst zu haben.

Verwandte Themen