Hallo Habr! Ich präsentiere Ihnen die Übersetzung des Artikels "In einer Minute in stark typisierte Winkelformen umwandeln" von Ajay Ojha.

In diesem Artikel erfahren Sie, wie Sie eine reaktive Form in eine stark typisierte Form umwandeln, ohne die Klassendefinition zu ändern.
TypeScript . , Angular . Angular . - «any», , ..
, Angular. , , . «», .
frontend- , . , , , , , - .
:
- ;
- valueChanges statusChanges FormControl ;
- FormGroup FormArray - .
(FormGroup, FormControl FormArray), . , :
- FormBuilder FormControl, FormGroup FormArray;
- ;
- , FormGroup , @angular/forms.
, .
? ?
, .
?
@rxweb/types. , , - .
, FormControl FormGroup FormArray. FormGroup.
export class AppComponent implements OnInit {
formGroup: FormGroup;
formBuilder: FormBuilder;
constructor(formBuilder: FormBuilder) {
this.formBuilder = formBuilder;
}
ngOnInit() {
this.formGroup = this.formBuilder.group({
firstName: ['', [Validators.required]],
address: this.formBuilder.group({
countryName: ["", Validators.required]
}),
skills: this.formBuilder.array([
this.formBuilder.group({
name: ["", Validators.required]
})
])
});
}
}
.
1.
npm install @rxweb/types
2.
. :
User >> firstName, address, skills; Address >> countryName; Skill >> name.
3.
:
- IFormGroup: API FormGroup;
- IFormBuilder: FormGroup, FormControl FormArray.
:
import { IFormGroup, IFormBuilder } from “@rxweb/types”;
4.
:
- FormGroup IFormGroup;
- FormBuilder IFormBuilder;
-
group<User>,group<Address>array<Skill>.
, , .
:
formGroup: IformGroup<User>;
formBuilder: IformBuilder;
ngOnInit() {
this.formGroup = this.formBuilder.group<User>({
firstName: ['', [Validators.required]],
address: this.formBuilder.group<Address>({
countryName: ["", Validators.required]
}),
skills: this.formBuilder.array<Skill>([
this.formBuilder.group({
name: ["", Validators.required]
})
])
});
}
, .
/,


, , . , , , , , - , «New Way to Validate the Angular Reactive Form».