Angulaire 2 ngOnInit pas appelé

Je suis bâtiment Angulaire à 2 application avec la version bêta.8.

Dans cette application j'ai un composant qui implémente OnInit.

Dans cette partie, j'ai la fonction ngOnInit, mais le ngOnInit fonction n'est jamais appelée.

import { Component, OnInit } from 'angular2/core';

@Component({
  templateUrl: '/app/html/overview.html'
})

export class OverviewComponent implements OnInit {
  ngOnInit() {
    console.log('ngOnInit');
  }
}

Le Routage de l'application:

@RouteConfig([
  {
    path: '/overview',
    name: 'Overview',
    component: OverviewComponent
  },
  {
    path: '/login',
    name: 'Login',
    component: LoginComponent
  },
  {
    path: '/register',
    name: 'Register',
    component: RegisterComponent,
    useAsDefault: true
  }
])

Il y a une case pour voir si l'utilisateur est déjà connecté à l'intérieur de la LoginComponent et RegisterComponent.

Si l'utilisateur est connecté, les composants de rediriger un Aperçu de l'aide: router.navigate(['Overview']).

Si j'utilise l'Aperçu de l'itinéraire par défaut, je ne vois ngOnInit à l'intérieur de la console.

La façon dont je rediriger ma page semble être le problème.

Comment pouvez rediriger vers la page de Présentation et d'appeler la ngOnInit fonction?

À la fois la RegisterComponentet la LoginComponent utilisation

ngOnInit() {
  this._browser.getStorageValue('api_key', api_key => {
    if (api_key) {
      this._browser.gotoMain();
    }
  })
}

Navigateur est une classe dans laquelle je stocke navigateur de code spécifique.
C'est le gotoMain fonction:

gotoMain() {
  this._router.navigate([this._browser.main]);
}

this._browser.main est juste une chaîne de caractères dans ce cas, 'vue d'ensemble'.

  • Avez-vous fait en sorte OverviewComponent œuvres? Si oui, Même si vous n'importez pas les OnInit et met en œuvre OnInit, ngOnInit fonctionne.
  • J'ai ajouté un message: string = 'test' à la OverviewComponent et a essayé de l'afficher dans la vue avec {{message}} et cela a fonctionné.
  • Oh ! Dans ce cas, j'ai besoin de voir votre code. Ok. Juste essayer de retirer ce que j'ai suggéré et voir si cela fonctionne !
  • à l'intérieur de la RegisterComponent et à l'intérieur de la LoginComponent j'ai un travail ngOnInit() dans lequel je vérifie si l'utilisateur est connecté. Si l'utilisateur est connecté, j'utilise this._router.navigate['Overview']
  • Cela n'aide pas beaucoup. Où est le code qui appelle this._router.navigate['Overview']. Dans le constructeur, un rappel à partir d'une bibliothèque qui communique avec le serveur, ...?
  • Il fonctionne si je l'ai mis Aperçu que mon itinéraire par défaut, mais pas si les obtenir à l'aperçu à travers router.navigate['Overview'].
  • c'est l'intérieur de la ngOnInit() de mon LoginComponent this._browser.getStorageValue('api_key', api_key => { if (api_key) { this._browser.gotoMain(); } })
  • modifier votre code. nous montrer route.config et comme Gunter a dit.
  • plnkr.co/modifier/cPDpUtTpklymlFf7iQhv?p=preview essayez de jouer avec elle si possible.
  • N Gunter désolé de ne pas être en mesure de mettre des .. accent en votre nom via le clavier.
  • pas de soucis 😀 Nous utilisons ue, oe au lieu de ü, ö sur les systèmes où les accents ne sont pas disponibles, mais juste u, o est très bien en utilisation informelle.
  • Ok Günter 🙂

InformationsquelleAutor VincentKen | 2016-03-11