Component
が初期化中であるため、コンポーネントが正常にロード/ 。コンポーネントのngOnInit
メソッドは、undefined
オブジェクトのメンバがテンプレート内でアクセスされているため、完全なエラーを防ぐために安全なページにnavigate()
を試行します。Angular 2コンポーネントの初期化を停止し、デフォルトの(安全な)ルートにナビゲートする方法
ngOnInit() {
// when no scenario has been passed to the component:
// try to get the active one from the application context via the scenario service
if (null == this.scenario) {
this.scenario = this.scenarioService.activeScenario;
// when there's no current scenario set in the application context:
// try to get one from the scenario service in the active period
if (null == this.scenario) {
this.scenario = this.scenarioService.getScenariosByYear(this.settingsService.activePeriod)[0];
// when there's no scenarios defined in the active period:
// navigate to the the scenario manager component so the user can create one
if (null == this.scenario) {
this.router.navigate(['/scenario']); // <==== this doesn't seem to fire
}
}
}
}
質問1:なぜthis.router.navigate(['/scenario']);
コール作業が(コンポーネントのライフサイクルを中断)しないのですか?
質問2:一般的に、初期化中にコンポーネントのライフサイクルを停止して、安全な場所への先取りナビゲーションを可能にする方法はありますか?
私にとってはうまく動作します。https://plnkr.co/edit/fjHkRLRDzVyw1U1smw48?p=preview –