0

次のコードスニペットがあります

.html

  <input type = "number"
         min = "0"
         max = "120"
         #yearsCtrl = "ngForm"
         [ngFormControl] = "ageForm.controls['yearsCtrl']"
         [(ngModel)] = "age.years"
         id = "years">

ダーツ

class Age
{
  int years = 0;
}

class AgeComponent {
....
  AgeComponent( FormBuilder fb, ModelService
  ageSrvc) {
    ageForm = fb.group( {
      'yearsCtrl': [''],
    } );
    _yearsCtrl = ageForm.controls['yearsCtrl'];

    age = new Age()
  }

...

}

アプリケーションを実行しようとすると、次のエラーが発生します (部分的)

>EXCEPTION: type 'String' is not a subtype of type 'num' of 'value'. in [AST]
  EXCEPTION: type 'String' is not a subtype of type 'num' of 'value'. in [AST]
    (anonymous function)    
  ORIGINAL EXCEPTION: type 'String' is not a subtype of type 'num' of 'value'.
    (anonymous function)    
  ORIGINAL STACKTRACE:
    (anonymous function)    
  #0      NumberValueAccessor.writeValue (package:angular2/src/common/forms/directives/number_value_accessor.dart:38:23)
#1      setUpControl (package:angular2/src/common/forms/directives/shared.dart:34:21)
#2      NgFormControl.ngOnChanges (package:angular2/src/common/forms/directives/ng_form_control.dart:111:7)
...

type="num" が処理されていないようです。int であるが文字列が必要であるという点で、age int も問題になる可能性があると思います。sting から int への逆変換も問題になる可能性があります。

どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1

0

フィールドのタイプは である必要がありますString。Angular は値を変換しません。

Polymer dart: Data bind integer value to String attributeに似ています

こちらもご覧ください

カスタム値アクセサーが役立つ場合があります。例については、このプランカーを参照してください。
コンポーネントは、、、でControlValueAccessorAddress実装します。writeValue(v)registerOnChange(fn)registerOnTouched(fn)

于 2016-02-13T22:29:45.207 に答える