ポリマー2.0にpaper-radio-group
を使用しようとしています。この質問(How to enforce required paper-radio-group in Polymer?)では、紙の無線グループがPolymer.IronFormElementBehavior
を実装していないため、通常の検証が機能しないことがわかりました。したがって、回避策の1つの方法は、この動作を実装する新しい要素を作成することです。ポリマー2.0で紙ラジオグループの検証を行う方法
私は他の質問の例のように行った:スロット要素は、光のDOM(https://www.polymer-project.org/2.0/docs/devguide/shadow-dom#shadow-dom-and-composition)を作成して、実際のpaper-radio-button
がpaper-radio-group
内部で実際にはない、
<dom-module id="app-radio-group">
<template>
<style include="shared-styles">
[invalid] ::slotted(paper-radio-button) {
--paper-radio-button-label-color: red;
--paper-radio-button-unchecked-color: red;
}
</style>
<paper-radio-group
id="group"
attr-for-selected="{{attrForSelected}}"
selected="{{selected}}">
<div invalid$="[[!valid]]">
<slot></slot>
</div>
</paper-radio-group>
</template>
<script>
class AppRadioGroup extends Polymer.Element {
static get is() { return 'app-radio-group'; }
static get behaviors() {
return [
'Polymer.IronFormElementBehavior'
];
}
get selectedItem() {
return this.$.group.selectedItem;
}
validate() {
this.valid = this.selectedItem != null;
return this.valid;
}
}
window.customElements.define(AppRadioGroup.is, AppRadioGroup);
</script>
</dom-module>
しかし。だから、ただ一つのラジオボタンを選択しても効果がなく、選択したラジオボタンの結果を得ることができません。
どのようにこの紙ラジオグループを作るためのアイデアは、鉄フォームの検証で動作しますか?
フォーム要素は、ポーで使用されている場合lymer 2.0では、Polymer.IronFormElementBehaviorを実装する必要はありません。これは、Iron-Form#2.0.0が依存しないためです。 Iron-form-element-registerおよびiron-form-element-unregisterのイベントは、Polymer 2.0では発生しません。 https://www.webcomponents.org/element/PolymerElements/iron-form-element-behavior – HakanC