Angular2中的自定义值访问器

TDaver

所以我有一个格式值访问器指令:

const CUSTOM_VALUE_ACCESSOR = new Provider(
    NG_VALUE_ACCESSOR, { useExisting: forwardRef(() => NumbersValueAccessor), multi: true });

@Directive({
    selector: 'input[format]',
    host: { '(input)': 'onMyChange($event.target.value)' },
    providers: [CUSTOM_VALUE_ACCESSOR]
})  
export class NumbersValueAccessor extends DefaultValueAccessor {
//...
}

然后我像

@Component({
    templateUrl: 'frequencyPage.html'
    , moduleId: module.id
    , directives: [/*...*/ NumbersValueAccessor]
})
export class FrequencyPage //...

并在html中

  <input  format="{number:true}" [(ngModel)]="test.alpha"/>

可以实例化它,但是查看角度JIT编译的模板代码:

  self._DefaultValueAccessor_32_3 = new jit_DefaultValueAccessor3(self.renderer,new jit_ElementRef18(self._el_32));
  self._Token_NgValueAccessor_32_4 = [
    self._DefaultValueAccessor_32_3,
    self._DefaultValueAccessor_32_3
  ]
  ;
  self._NgModel_32_5 = new jit_NgModel5(null,null,null,self._Token_NgValueAccessor_32_4);
  self._NgControl_32_6 = self._NgModel_32_5;
  self._NgControlStatus_32_7 = new jit_NgControlStatus7(self._NgControl_32_6);
  self._NumbersValueAccessor_32_8 = new jit_NumbersValueAccessor8(self.renderer,new jit_ElementRef18(self._el_32));

它是在AFTER ngModel之后创建的,因此不会传递给它,因此,当我实际编辑输入时,它是被调用的默认值访问器。我想念什么?


编辑:我发现的一件事:如果我不是扩展DefaultValueAccessor,而是从头开始重新实现ControlValueAccessor,它将起作用。它是angular2模板编译器中的错误吗?

毁灭

它是angular2模板编译器中的错误吗?

是的,github中已经存在多个问题:

https://github.com/angular/angular/issues/9146#issuecomment-230410616

装饰器似乎无法覆盖angular2-class的元数据。


与该元数据错误有关的更多问题:

https://github.com/angular/angular/issues/9758

https://github.com/angular/angular/issues/8925

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Angular2中的自定义值访问器

来自分类Dev

从Angular2中的自定义验证器访问服务

来自分类Dev

Angular2自定义验证器未调用

来自分类Dev

Angular2的自定义渲染器

来自分类Dev

Angular2自定义验证器未调用

来自分类Dev

angular2获取自定义属性的值

来自分类Dev

如何在Angular2 / 4/5中实现自定义异步验证器

来自分类Dev

如何在Angular2中制作自定义验证器

来自分类Dev

NgSwitch中的Angular2自定义组件

来自分类Dev

如何编写依赖于Angular2中当前组件的属性值的自定义表单验证器(由模型驱动)

来自分类Dev

Angular 2自定义控件链接到带有控件值访问器,组合日期选择器的ngControl

来自分类Dev

Angular 2自定义控件链接到带有控件值访问器,组合日期选择器的ngControl

来自分类Dev

Angular 10-形式化-在自定义形式化包装器中访问字段的值

来自分类Dev

扩展http类并访问自定义属性(Angular2打字稿)

来自分类Dev

扩展http类并访问自定义属性(Angular2打字稿)

来自分类Dev

Angular - 控制器中的自定义验证器功能:如何访问“this”?

来自分类Dev

Angular2自定义输入-必须定义令牌

来自分类Dev

在angular2的自定义Http中未定义注入的Logger

来自分类Dev

如何在Dart中使用Angular2实现自定义验证器?

来自分类Dev

Angular2:使用自定义装饰器或批注将提供程序注入组件吗?

来自分类Dev

在Angular2的自定义验证器中注入服务

来自分类Dev

折线图自定义X值访问器

来自分类Dev

折线图自定义X值访问器

来自分类Dev

自定义管道在Angular 2中

来自分类Dev

使用ngFor处理自定义指令-Angular2

来自分类Dev

angular2自定义指令输入语法

来自分类Dev

如何使angular2自定义事件冒泡

来自分类Dev

Angular2 Raw HTML自定义属性

来自分类Dev

DevExtreme Angular2 表单的自定义标签

Related 相关文章

  1. 1

    Angular2中的自定义值访问器

  2. 2

    从Angular2中的自定义验证器访问服务

  3. 3

    Angular2自定义验证器未调用

  4. 4

    Angular2的自定义渲染器

  5. 5

    Angular2自定义验证器未调用

  6. 6

    angular2获取自定义属性的值

  7. 7

    如何在Angular2 / 4/5中实现自定义异步验证器

  8. 8

    如何在Angular2中制作自定义验证器

  9. 9

    NgSwitch中的Angular2自定义组件

  10. 10

    如何编写依赖于Angular2中当前组件的属性值的自定义表单验证器(由模型驱动)

  11. 11

    Angular 2自定义控件链接到带有控件值访问器,组合日期选择器的ngControl

  12. 12

    Angular 2自定义控件链接到带有控件值访问器,组合日期选择器的ngControl

  13. 13

    Angular 10-形式化-在自定义形式化包装器中访问字段的值

  14. 14

    扩展http类并访问自定义属性(Angular2打字稿)

  15. 15

    扩展http类并访问自定义属性(Angular2打字稿)

  16. 16

    Angular - 控制器中的自定义验证器功能:如何访问“this”?

  17. 17

    Angular2自定义输入-必须定义令牌

  18. 18

    在angular2的自定义Http中未定义注入的Logger

  19. 19

    如何在Dart中使用Angular2实现自定义验证器?

  20. 20

    Angular2:使用自定义装饰器或批注将提供程序注入组件吗?

  21. 21

    在Angular2的自定义验证器中注入服务

  22. 22

    折线图自定义X值访问器

  23. 23

    折线图自定义X值访问器

  24. 24

    自定义管道在Angular 2中

  25. 25

    使用ngFor处理自定义指令-Angular2

  26. 26

    angular2自定义指令输入语法

  27. 27

    如何使angular2自定义事件冒泡

  28. 28

    Angular2 Raw HTML自定义属性

  29. 29

    DevExtreme Angular2 表单的自定义标签

热门标签

归档