バージョン beta.8 で Angular 2 アプリを構築しています。
このアプリには、OnInit を実装するコンポーネントがあります。
このコンポーネントには関数 ngOnInit がありますが、ngOnInit 関数は呼び出されません。
import { Component, OnInit } from 'angular2/core';
@Component({
templateUrl: '/app/html/overview.html'
})
export class OverviewComponent implements OnInit {
ngOnInit() {
console.log('ngOnInit');
}
}
アプリのルーティング:
@RouteConfig([
{
path: '/overview',
name: 'Overview',
component: OverviewComponent
},
{
path: '/login',
name: 'Login',
component: LoginComponent
},
{
path: '/register',
name: 'Register',
component: RegisterComponent,
useAsDefault: true
}
])
ユーザーが LoginComponent および RegisterComponent 内ですでにログインしているかどうかを確認するチェックがあります。
ユーザーがログインしている場合、コンポーネントは以下を使用して概要にリダイレクトしますrouter.navigate(['Overview'])
。
概要ルートをデフォルトとして使用すると、コンソール内に ngOnInit が表示されます。
したがって、ページをリダイレクトする方法が問題のようです。
概要ページにリダイレクトして ngOnInit 関数を呼び出すにはどうすればよいですか?
使用 も使用RegisterComponent
もLoginComponent
ngOnInit() {
this._browser.getStorageValue('api_key', api_key => {
if (api_key) {
this._browser.gotoMain();
}
})
}
ブラウザは、ブラウザ固有のコードを格納するクラスです。これは gotoMain 関数です:
gotoMain() {
this._router.navigate([this._browser.main]);
}
this._browser.main
この場合、'Overview' は単なる文字列です。