私はプロジェクトでAngular 4.2.xを使用しています.2ページあります:ページ1はフォームを持ち、ページ2はサマリーページです。Angular2:2ページのページ1のフォーム検証ステータスを取得するにはどうすればよいですか?
ページ1のすべてのフィールドが有効になると、両方のページで共有されるサービスに真のフラグが格納されます。私はページ2をロードするときにこのフラグを表示することを期待していますが、ページ1ではこの変数がtrueに設定されていますが、常にfalseです。
Page1Component:
export class Page1Component implements OnInt {
ngOnInit() {
this.form1.valueChanges.subscribe(changes => {
if (this.form1.invalid) {
this.globalService.updatePageStatus(false);
} else {
this.globalService.updatePageStatus(true);
}
});
}
}
GlobalService:
export class GlobalService {
isPageCompleted: false;
updatePageStatus(isCompleted: boolean) {
this.isPageCompleted = isCompleted;
console.log("Is page 1 completed? " + this.isPageCompleted);
}
}
Page2Component:
export class Page2Component implements OnInit {
isPage1Completed = false;
ngOnInit() {
this.isPage1Completed = this.globalService.isPageCompleted;
console.log("On page 2, is page 1 completed? " + this.isPage1Completed);
}
}
そしてPage1ComponentとPage2Componentは遅延ロードされている異なるモジュールです。ブラウザコンソールでは、「ページ1が完成しましたか?true」と表示されますが、ページ2に移動すると「ページ2が完成しましたか?false」と表示されます。
ありがとう!