0

嗨,当表单变得原始时,有什么方法可以在指令中调用函数。那就是当表单变得原始时,我需要向选项卡标题添加一个 CSS 类

<form [formGroup]="awayForm" (ngSubmit)="onSubmit()" awayConfirm [cancelClicked]="cancelClick">
</form>

这是我的表单,我的表单中有一个 awayConfirm 指令。该指令仅表明表单在选项卡内是脏的(只需添加 CSS 类指示)。现在我需要在表单变得原始时删除该类

    export class AwayConfirmCheckComponent implements OnInit {  
      ......
     onSubmit(){
        this.awayForm.markAsPristine()
     }
    }

当调用 markAsPristine 时,我需要在 awayConfirm 指令中触发一个函数。

4

1 回答 1

1

由于这两个组件之间没有关系,因此您可以使用共享服务在它们之间传递数据。

我会BehaviorSubject<boolean>在共享服务中创建一个。然后我将调用next它的方法并true在我将它设置formpristine. 我也会在其他组件中subscribe这样做。BehaviorSubject一旦next调用了该方法,我将能够在其他组件中收到有关它的通知。

在共享服务中:

formPristinenessChanged: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(null);

在带有表单的组件中:

export class AwayConfirmCheckComponent implements OnInit {
  constructor(private service: SharedService) {}
  ......
  onSubmit() {
    this.awayForm.markAsPristine();
    this.service.formPristinenessChanged.next(true);
  }
}

在其他组件中:

constructor(private service: SharedService) {}

this.service.formPristinenessChanged.subscribe(pristine => {
    if(pristine) // formWasSetToPristine
});
于 2018-09-17T04:27:42.517 回答