ngonchanges ngafterviewinit angular typescript ngoninit

ngafterviewinit - Angular 2 ngOnInit no llamado



ngoninit constructor angular (2)

Los ganchos de ciclo de vida, como OnInit (), funcionan con directivas y componentes. No funcionan con otros tipos, como un servicio. Revisa este link para más

Estoy construyendo una aplicación Angular 2 con versión beta.8.
En esta aplicación tengo un componente que implementa OnInit.
En este componente tengo la función ngOnInit, pero la función ngOnInit nunca se llama.

import { Component, OnInit } from ''angular2/core''; @Component({ templateUrl: ''/app/html/overview.html'' }) export class OverviewComponent implements OnInit { ngOnInit() { console.log(''ngOnInit''); } }

El enrutamiento de la aplicación:

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

Hay una verificación para ver si el usuario ya ha iniciado sesión dentro de LoginComponent y RegisterComponent.
Si el usuario ha iniciado sesión, los componentes se redirigen a Descripción general mediante: router.navigate([''Overview'']) .
Si utilizo la ruta de vista general como predeterminada, veo ngOnInit dentro de la consola.
Así que la forma en que redirecciono mi página parece ser el problema.
¿Cómo se puede redirigir a la página de información general y llamar a la función ngOnInit?

Tanto el RegisterComponent como el LoginComponent utilizan

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

El navegador es una clase en la que almaceno el código específico del navegador. Esta es la función gotoMain:

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

this._browser.main es solo una cadena en este caso ''Información general''.


Supongo que es un problema de zona.

Inyectar NgZone (importación desde angular2/core

constructor(private zone:NgZone) {} this._browser.getStorageValue(''api_key'', api_key => { if (api_key) { this.zone.run(() => this._browser.gotoMain()); } })