我有连接到控制值访问器的自定义组件。在这个组件中,我正在动态构建我的表单标签,如输入、文本区域等......
它一切正常 - 但是当我尝试发送嵌套表单组时遇到问题。所以在表单组中形成组。
我已经建立了这个 formGroup
registerFG = this.builder.group({
password_register: ['', [Validators.required]],
email_register_group: this.builder.group({
email_register: ['', [Validators.required, CustomValidators.emailDomain('yourcompanyname.com')]],
email_register_confirm: ['', [Validators.required]],
}),
si 如果我想发送password_register
,我会在我的父组件中发送
<app-form-group inputType="password" cssTemplate="white" formControlName="password_register" [data]="{ field: 'password_register', label: 'Password' }"></app-form-group>
但这只是我的主要 formGroup 中的一个 formControlregisterFG
现在我需要发送整个formGroup - email_register_group
嵌套在我的 mainformGroup - registerFG
中。
我使用自定义子组件
父组件
<app-sub-form-group formGroupName=email_register_group></app-sub-form-group>
子组件 HTML
<ng-container [formGroup]="controlContainer.control">
<app-form-group cssTemplate="white" formControlName=email_register [data]="{ field: 'email_register', label: 'Email' }"></app-form-group>
<app-form-group cssTemplate="white" formControlName=email_register_confirm [data]="{ field: 'email_register_confirm', label: 'Confirm Email' }"></app-form-group>
</ng-container>
子组件 TS
@Input() public formGroupName: string;
constructor(public controlContainer: ControlContainer) {
}
连接到控制值访问器的cutom-component
@Component({
selector: 'app-form-group',
templateUrl: './form-group.component.html',
styleUrls: ['./form-group.component.scss'],
// providers: [{
// provide: NG_VALUE_ACCESSOR,
// useExisting: forwardRef(() => FormGroupComponent),
// multi: true
// }
// ],
})
export class FormGroupComponent implements OnInit {
constructor(@Self() @Optional() public control: NgControl,
private authService: AuthService, private builder: FormBuilder) {
// here i keep geting just the ngControl with formControl inside but now the formGroup with
// two formControls inside
console.log(control);
}
}
how can i get my formGroup with two formControls inside -
email_register_group`
如此处建议:
但是当我做同样的事情时,i9 继续得到里面的控制 - 而不是 formGroup