将子表单插入父表单Angular2时出错

时间:2018-01-29 14:15:45

标签: angular forms

我关注的是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;
  }
  1. 没有ChangeDetectorRef的提供者(在将其用于子组件时)
  2. 我在父组件中创建了canDeactivate guard,用于检查父窗体是否脏。在这里,我观察到,在父表格中没有添加任何子表格。
  3. 有没有人遇到过这个问题? 任何帮助表示赞赏。

0 个答案:

没有答案