我正在努力将angularjs2与聚合物结合起来。我为聚合物输入元素创建了一个自定义ControlValueAccessor。当我使用模型驱动程序表单时,我能够显示从组件到UI的值,但是如果我在UI中更改它不反映到组件。似乎双向绑定不能按预期工作。谁可以帮我这个事?
Angular版本:2.0.0-beta.1
import {Directive, ElementRef, Renderer, Self, forwardRef, Provider} from 'angular2/core'; import {isBlank, CONST_EXPR} from 'angular2/src/facade/lang'; import {DefaultValueAccessor} from "angular2/common"; import {NG_VALUE_ACCESSOR} from "angular2/common"; import {ControlValueAccessor} from "angular2/common"; const POLYMER_VALUE_ACCESSOR = CONST_EXPR(new Provider( NG_VALUE_ACCESSOR, {useExisting: forwardRef(() => PolymerValueAccessor), multi: true})); @Directive({ selector: 'paper-input', host: {'(paper-input)': 'onChange($event.target.value)', '(blur)': 'onTouched()'}, bindings: [POLYMER_VALUE_ACCESSOR] }) export class PolymerValueAccessor implements ControlValueAccessor { onChange = (_) => {}; onTouched = () => {}; constructor(private _renderer: Renderer, private _elementRef: ElementRef) { //this._elementRef.nativeElement.addEventListener('iron-input', (e) => { // this.onChange(e.target.value); //}); } writeValue(value: any): void { var normalizedValue = isBlank(value) ? '' : value; this._renderer.setElementProperty(this._elementRef.nativeElement, 'value', normalizedValue); //console.log(this._elementRef.nativeElement.renderView); //this._elementRef.nativeElement.set('value', normalizedValue); } registerOnChange(fn: (_: any) => void): void { this.onChange = fn; } registerOnTouched(fn: () => void): void { this.onTouched = fn; } }