次の宣言について混乱しています:
constructor(controls: {[key: string]: AbstractControl}, optionals?: {[key: string]: boolean}, validator?: ValidatorFn, asyncValidator?: AsyncValidatorFn)
コントロールのタイプは何ですか(最初のパラメーター)?キーが文字列で値がAbstractControlであるキー値ペアの配列であるオブジェクトですか?ありがとう!
はい、ご想像のとおり、キーとして文字列を持ち、値としてAbstractControl
を持つjsオブジェクトです。
例えば:
{
"control1": new Control(),
"control2": new Control()
}
次の2つの方法で、このタイプの変数を宣言できます。
let controls: { [key: string]: AbstractControl };
または
interface ControlsMap {
[key: string]: AbstractControl;
}
let controls: ControlsMap;
またはさらに良い:
interface ControlsMap<T extends AbstractControl> {
[key: string]: T;
}
let controls1: ControlsMap<AbstractControl>;
let controls2: ControlsMap<MyControl>;