gpt4 book ai didi

forms - 可以使用 ngControl 绑定(bind) Polymer paper-dropdown-menu 吗?

转载 作者:搜寻专家 更新时间:2023-10-30 21:53:20 25 4
gpt4 key购买 nike

我正在尝试使用 Polymer paper-dropdown-menu 控件在 Angular2 中创建一个表单。有没有办法将下拉列表的选定值绑定(bind)到我的组件中的控件?我已经尝试了一切但没有运气。有人克服了这个障碍吗?

一个有效的 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 有类似的东西吗?绑定(bind)到值或文本本身都可以。谢谢!

最佳答案

您需要一个自定义的 ControlValueAccessor。我没有为 paper-dropdown-menu 本身使用 ControlValueAccessor 成功,而是为 paper-menupaper-listbox 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;
}
}

另见

关于forms - 可以使用 ngControl 绑定(bind) Polymer paper-dropdown-menu 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37312856/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com