Halo, Habr! Untuk perhatian Anda, saya persembahkan terjemahan dari artikel "Ubah Menjadi Bentuk Sudut yang Sangat Diketik dalam Satu Menit" oleh Ajay Ojha.

Pada artikel ini, kita akan mempelajari cara mengubah formulir reaktif menjadi formulir yang diketik dengan kuat tanpa mengubah definisi kelas.
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Β».