【问题标题】:<input type="number"> generating errors<input type="number"> 生成错误
【发布时间】:2016-05-24 23:15:28
【问题描述】:

我有以下代码sn-ps

.html

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

.dart

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 也可能是一个问题,因为它是一个 int 但需要一个字符串。从 sting 返回到 int 的反向转换也可能是一个问题。

感谢任何帮助。

谢谢

【问题讨论】:

    标签: dart angular angular2-forms


    【解决方案1】:

    该字段的类型必须为String。 Angular 不会转换该值。

    类似于Polymer dart: Data bind integer value to String attribute

    另见

    自定义值访问器可能会有所帮助。有关示例,请参阅此 Plunker
    组件AddresswriteValue(v)registerOnChange(fn)registerOnTouched(fn) 实现ControlValueAccessor

    【讨论】:

    • 为什么不能使用管道进行上述 ngModel 赋值的转换?我试过了,它会导致错误。我以前看过我自己的上面的帖子,但不能说我将如何将它应用于 angular。我会用 writeValue(v) 来看看 ControlValueAccessor
    • 我在http://plnkr.co/edit/aggee6An1iHfwsqGoE3q?p=preview 发现了 ControlValueAccessor 的使用,但由于某些类似乎不同,因此需要一个到 Dart 的端口。
    • #yearsCtrl = "ngForm" or [ngFormControl] = "ageForm.controls['yearsCtrl']" 的存在总是会产生错误。这是一个bug还是angular2不支持数字类型?
    猜你喜欢
    • 2018-11-01
    • 2016-09-07
    • 1970-01-01
    • 2020-02-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-28
    • 2012-01-16
    • 1970-01-01
    相关资源
    最近更新 更多