Я не думаю, что это возможно, я не мог найти ничего подобного в исходном коде, но я придумал эту идею.
Где вы определяете форму:
<form [formGroup]="controlGroup (submit)="controlGroup.submit.emit(controlGroup.value)">
<input [formControl]='firstNameControl' name="firstname">
</form>
в своем классе;
export class MyComponent {
private controlGroup = new FormGroup({});
// this is your root controlGroup , how ever else you've created this is alright
constructor(){
this.controlGroup.submit = new EventEmitter<any>();
// we inject an event emitter inside the root controlGroup
this.controlGroup.submit.subscribe((data)=>{
console.log('form is submitted with value ',data);
});
}
}
И тогда вы могли бы сделать:
export class FormControlContainerComponent implements OnInit {
@Input() control: AbstractControl;
ngOnInit(): void {
this.control.root.submit.subscribe((data)=>{
console.log('form is submitted with value ',data);
});
}
}
Очевидно, что это выглядит как немного рубить, но это не имеет никакого вреда, предпочтительным способом было бы определить новый класс, который простирается от FormGroup и предоставляет эту функцию отправки, но мне было лениво сделать это: D