3
所以我有一個格式化值存取指令:自定義值訪問在Angular2
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));
它是在ngModel之後創建的,因此不會傳遞給它,因此,當我實際編輯輸入時,它是被調用的默認值訪問器。 我在想什麼?
編輯:有一件事,我發現:如果不是延長DefaultValueAccessor我從頭開始重新實現ControlValueAccessor,它的工作原理。 它是在angular2的模板編譯器中的錯誤?
好了,有了一個簡單的解決方法和存在的問題在github上,我的工作已經做了:) – TDaver