2016-05-19 43 views
2

我正在尝试使用Polymer paper-dropdown-menu控件在Angular2中创建表单。有没有办法将选定的下拉列表的值绑定到我的组件中的控件?我已经尝试了一切,没有运气。有没有人得到这个障碍?可以使用ngControl绑定聚合物纸张下拉菜单吗?

一个例子的工作paper-input的是:

模板:

<paper-input type="password" 
      ngControl="password" 
      ngDefaultControl> 
</paper-input> 

组件:

constructor(private fb:FormBuilder) { 

    this.loginForm = fb.group({ 
     password: new Control("") 
    }); 
} 

是否有paper-dropdown-menu类似的东西?绑定到值或文本本身都可以。谢谢!

回答

1

您需要定制ControlValueAccessor。我没有成功使用了paper-dropdown-menu本身ControlValueAccessor但里面的paper-dropdown-menu

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


@Directive({ 
    selector: 'paper-listbox', 
    host: {'(iron-activate)': 'onChange($event.detail.selected)'}, 
    providers: [PAPER_MENU_VALUE_ACCESSOR] 

}) 
export class PaperMenuControlValueAccessor implements ControlValueAccessor { 
    onChange = (_:any) => { 
    }; 
    onTouched =() => { 
    }; 

    constructor(private _renderer:Renderer, private _elementRef:ElementRef) { 
    console.log('PaperMenuControlValueAccessor'); 
    } 

    writeValue(value:any):void { 
    //console.log('writeValue', value); 
    this._renderer.setElementProperty(this._elementRef.nativeElement, 'selected', value); 
    } 

    registerOnChange(fn:(_:any) => {}):void { 
    this.onChange = fn; 
    } 

    registerOnTouched(fn:() => {}):void { 
    this.onTouched = fn; 
    } 
} 

paper-menupaper-listbox

+1

也做了见诡计,非常感谢! –

相关问题