選択入力のオプションはこのように、テンプレートに定義されている場合:選択入力は、オプションでngValueは、角2成分が異なる
<select formControlName="gender">
<option *ngFor="let g of genders" [ngValue]="g.code">{{g.name}}</option>
</select>
制御がレンダリングされる:
<select class="ng-pristine ng-valid ng-touched" formcontrolname="gender" ng-reflect-name="gender">
<option ng-reflect-ng-value="0: 71011">Dona</option>
<option ng-reflect-ng-value="1: 71012">Home</option>
<option ng-reflect-ng-value="2: 71013">Desconegut</option>
</select>
選択したオプションの場合、の値がFormGroupから数値としてリカバリされます。
今私は同じ構造(コード/名)で任意のパラメータのリストをロードするコンポーネントを開発しようとしているし、そのために、私は、コンポーネント定義されていますが、内のコードで
@Component({
selector: 'select[selectLoader]',
template: `
<option *ngFor="let parameter of parametersArray" [ngValue]="parameter.code">{{parameter.name}}</option> `
})
をパラメータリストは、属性family
の値(パラメータのファミリのコードを提供する)から適切にロードされます。この場合
<select class="c3 ng-pristine ng-valid ng-touched" family="GENDER" formcontrolname="gender" selectloader="" ng-reflect-name="gender" ng-reflect-family="GENDER">
<option ng-reflect-ng-value="71011">Dona</option>
<option ng-reflect-ng-value="71012">Home</option>
<option ng-reflect-ng-value="71013">Desconegut</option>
</select>
を、FormGroupによって返さ値が文字列代わりの数であるがそうである:違いは、1つのコンポーネントがレンダリングされる回数の両方のケースでコードされ、ということですオプションのテンプレート部分は同じであり、異なる方法でレンダリングされ、戻り値はngValue
タイプに対応しません。
ngValue
は、[ngValue]="parameter.code"
と定義され、code
ですが、2番目の数字は文字列として扱われます。
どうして違うのですが、どうすればいいですか?
更新:example in stakblitzです。私はngValueを完全に無視し、コンテンツテキストを値として取ることも発見しました。
私はこの問題は、あなたのコードの他の部分であると思います。 stackblitz.comの再生例を作成できれば、簡単に調査することができます。 –
残りのコードはパラメータリストのロードだけを持ち、両方の場合に 'code'は数字です。 – francadaval
"話が安く、コードを見せてください。" Linus Torvalds(2000) –