首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Angular2中的自定义值访问器

Angular2中的自定义值访问器
EN

Stack Overflow用户
提问于 2016-07-12 01:48:16
回答 1查看 2.1K关注 0票数 3

因此,我有一个格式化值访问器指令:

代码语言:javascript
运行
AI代码解释
复制
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 {
//...
}

然后我用它就像

代码语言:javascript
运行
AI代码解释
复制
@Component({
    templateUrl: 'frequencyPage.html'
    , moduleId: module.id
    , directives: [/*...*/ NumbersValueAccessor]
})
export class FrequencyPage //...

在html中为

代码语言:javascript
运行
AI代码解释
复制
  <input  format="{number:true}" [(ngModel)]="test.alpha"/>

它是实例化的,但是看看JIT编译好的模板代码:

代码语言:javascript
运行
AI代码解释
复制
  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));

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

编辑:我发现了一件事:如果不是扩展DefaultValueAccessor,而是从头开始重新实现ControlValueAccessor,那么它就能工作。是angular2 2的模板编译器中的一个bug吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-12 05:31:06

它是angular2 2模板编译器中的一个bug吗?

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

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

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

更多与此元数据错误相关的问题:

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38325362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档