Rap*_*let 2 types typescript angular formarray formgroups
我应该如何声明这个类型?
假设我有一个FormGroup
export interface MyType {
myValue: string
}
Run Code Online (Sandbox Code Playgroud)
myForm: FormGroup
myArray: FormArray // <FormControl<MyType>>
constructor(private _formBuilder: FormBuilder) {
myForm = new FormGroup({
myArray: this._formBuilder.array([])
})
}
Run Code Online (Sandbox Code Playgroud)
addElement() {
this.myArray = this.myForm.get('myArray') as unknown as FormArray
this.myArray.push(this.newElement())
}
private _newElement(): FormGroup { // What type to use ?
return this._formBuilder.group({
myValue: ''
})
}
Run Code Online (Sandbox Code Playgroud)
但是当我使用
myArray: FormArray<FormControl<MyType>>
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
Argument of type 'FormGroup<any>' is not assignable to parameter of type 'FormControl<MyType>'.
Type 'FormGroup<any>' is missing the following properties from type 'FormControl<MyType>': defaultValue, registerOnChange, registerOnDisabledChange
Run Code Online (Sandbox Code Playgroud)
有人知道
private _newElement(): FormGroup { // What type to use ?myArray: FormArray<FormControl<MyType>>?->FormGroup<FormControl<MyType>>不正确export class MyTypeForm {
myValue: FormControl<string>;
}
Run Code Online (Sandbox Code Playgroud)
myArray类型声明为FormArray<FormGroup<MyTypeForm>>.myArray: FormArray<FormGroup<MyTypeForm>>;
Run Code Online (Sandbox Code Playgroud)
_newElement返回类型的方法FormGroup<MyTypeForm>。private _newElement(): FormGroup<MyTypeForm> {
return this._formBuilder.group<MyTypeForm>({
myValue: this._formBuilder.control(''),
});
}
Run Code Online (Sandbox Code Playgroud)