2016-10-03 8 views
3

私はSematinc-UIとAngular2 ReactiveFormsModuleフォームを使用していますが、選択マルチに[formControl]を使用したいと思います。選択マルチのAngular2 formControl

私はselectを使用している場合、それは問題なく動作します。私はそれが動作しない複数選択を使用する場合

 <select class="ui fluid dropdown" [formControl]="myForm.controls.category"> 
      <option *ngFor="let item of categories" value="{{item}}">{{item}}</option> 
     </select> 

 <select multiple="" class="ui fluid dropdown" [formControl]="myForm.controls.category"> 
      <option *ngFor="let item of categories" value="{{item}}">{{item}}</option> 
     </select> 

私はこのエラーを取得する:

コアを.umd.js:3462例外:未知(約束):エラー:http://localhost:3000/app/components/category.component.jsクラスのエラーCategoryComponent - インラインテンプレート:0:1701によって引き起こされる:values.mapは関数

何が問題なのですか?

+0

'categories.component.js'(と' .ts')にはvalues.mapが関数ではないと書かれているものは何ですか? –

+0

私は 'values'変数も' .js'ファイルも '.ts'ファイルもありません。 – smartmouse

+0

私は同じ問題を発見しています。私はFormBuilderグループを構築し、 '' courseIds ':[1,3,5] '(ここではcourseIdsは複数選択です)を追加すると、" this.validatorは関数ではありません "という文句を言います。私が '' courseIds ':{value:[1,3,5]}を渡すと、values.mapは関数ではありません。なぜなら、オブジェクト全体が配列ではなく値として渡されているからです。 FormControlコンストラクタに複数の値を渡す方法を教えてください。 – steverippl

答えて

0

FormControl(https://github.com/angular/angular/blob/master/modules/%40angular/forms/test/form_control_spec.ts)のテストでは、配列を渡すと2番目以降の値がバリデータとして扱われることは明らかです(したがって、上記のコメントの最初のエラーです)。配列を渡すには(オブジェクト内の)「ボックス化」する必要がありますが、FormControlでは値として「値」プロパティを使用するために「無効」プロパティが必要なので、最終的に正しい形式は'courseIds': {value: [1,3,5], disabled: false}でした。

5

私はそれを働かせました。そのトリックは、何も選択されていなくても、値が常に配列であることを確認することでした。

<select multiple class="ui fluid dropdown" [formControl]="myForm.controls.category"> 
    <option *ngFor="let item of categories" [ngValue]="item">{{item}}</option> 
</select> 

FormControlを作成空白値ではなく''またはundefinedよりも空の配列、であることを確認してください。

this.control = new FormControl([]); 

私はちょうど標準アンギュラ2

+0

どのような有効なルールを使用していますか?それを動作させることはできません。 –

+0

私は覚えていませんが、私の例では検証ルールがないことを示しています。 –

1

がionic2と反応性形で協力して、セマンティック-UIを使用していないよ、私は、MINLENGTH()「に必要な」バリを使用して選択し、複数を検証することができました動作しませんでした。検証に合格しない場合は、モデルにnullを渡す必要があります。空の配列は「必須」検証に合格します。あなたが私に尋ねるとちょっと変だ。

関連する問題