2016-08-30 9 views
2

誰かが私に次の活字体の構文を説明することができますしてください:[s: string]意味:角度2 - カスタムバリデータ構文

{[s: string]: boolean} 

これは、アレイを何、特に角2内ValidatorFnの戻り値の型ですか?

私自身のカスタムValidatorFn関数を記述するとき、ブール値フィールドの目的は何ですか?以下では差はないように思える:

startsWithZero(control: FormControl): {[s: string]: boolean} { 
    if (control.value.indexOf('0') !== 0) { 
     return {'does not start with zero': false}; 
    } 

    return null; 
} 

startsWithZero(control: FormControl): {[s: string]: boolean} { 
    if (control.value.indexOf('0') !== 0) { 
     return {'does not start with zero': true}; 
    } 

    return null; 
} 

対は、角度のドキュメントは、この点で少し抽象的であるとGoogleで多くを見つけることができません。ありがとう!

答えて

2

、型注釈{[s: string]: boolean}は鍵がstringであり、値がbooleanある辞書を意味します。

このようなタイプはIndexable Typesと呼ばれます。これは、辞書を記述する典型的な方法(ハッシュマップ)です。例えば、キーは、検証ルールを識別する - ...

export interface ValidatorFn { 
    (c: AbstractControl): { 
     [key: string]: any; 
    }; 
} 

AbstractControlを受け取り、辞書を返す関数を:角2で

ValidatorFnは次のように入力されmaxLengthであり、その値はルールが失敗した理由を説明するものであれば何でもかまいません。 {'requiredLength': maxLength, 'actualLength': v.length}。それはbooleanである必要はありません。

角2源の例はhereです。

+0

パーフェクト - ありがとうございます。 – keldar

1

私は文字列変数を評価し、その変数にブール型を割り当てると思います。 [s:string] = "myVar"のようなものです。そのは実際に「myVarに:ブール」と言ってから、この例では

関連する問題