Confus à propos de la déclaration suivante:
constructor(controls: {[key: string]: AbstractControl}, optionals?: {[key: string]: boolean}, validator?: ValidatorFn, asyncValidator?: AsyncValidatorFn)
Quel est le type des contrôles (premier paramètre)? S'agit-il d'un objet qui est un tableau de paires clé-valeur, où clé est une chaîne et où valeur est AbstractControl? Merci!
Oui, comme vous l'avez deviné, c'est un objet js avec key en tant que chaîne et AbstractControl
en tant que valeurs.
Par exemple:
{
"control1": new Control(),
"control2": new Control()
}
Vous pouvez déclarer une variable de ce type de deux manières:
let controls: { [key: string]: AbstractControl };
ou
interface ControlsMap {
[key: string]: AbstractControl;
}
let controls: ControlsMap;
ou même mieux:
interface ControlsMap<T extends AbstractControl> {
[key: string]: T;
}
let controls1: ControlsMap<AbstractControl>;
let controls2: ControlsMap<MyControl>;