我关注的是plunker
将我的子表单与父表单相关联。我想创建canDeactivate guard来检查用户是否在表单中做了任何更改?如果有任何更改,用户应在导航之前获得一个确认对话框。
在Child表单中,我传递带有@Input标记的父表单,并在ngOnInIt块中,将子表单添加到父表单中。
在做同样的事情时,我面临着多个问题。
this.childForm = this.fb.group({
input1: ['', [Validators.required, Validators.pattern('.*[\\S].*')]],
});
this.parentForm.addControl('childForm', this.childForm);
// this.cd..markForCheck();
我在Parent组件中创建了canDeactivate guard,
canDeactivate(): Observable<boolean> | boolean {
console.log(this.ParentForm);
if (this.parentForm.dirty) {
console.log('came to canDeactivate');
return Observable.create((observer: Observer<boolean>) => {
this.confirmationService.confirm({
message: 'Leaving this page will lose any changes made',
header: 'Warning',
icon: 'fa fa-question-circle',
accept: () => {
observer.next(true);
observer.complete();
},
reject: () => {
observer.next(false);
observer.complete();
}
});
});
}
console.log('came out of candeactivate');
return true;
}
有没有人遇到过这个问题? 任何帮助表示赞赏。