Mijn vraag
Ik heb een webcomponent (geen angular component, maar een pure webcomponent, ook geen polymer) en die heb ik in mijn angular website gehangen. so far so good. het component wordt netjes getoont en reageert ook precies zoals ik verwacht. ik heb hiervoor (gedeeltelijk https://alligator.io/angular/using-custom-elements/) als voorbeeld voor gebruikt.
toen wilde ik gaan databinden... en daar loop ik nu op stuk. Mijn custom webcomponent gebruikt trouwens shadow-dom (geen idee of dat uitmaakt voor dit verhaal)
in mijn JS code (van mijn custom webcomponent) heb ik nu staan
Wat ik al gevonden of geprobeerd heb
als ik in mijn angular pagina het event 'valueChange' afvang, dan krijg ik alleen "{ "isTrusted": false }" te zien.
als ik 2way databinding probeer, dan krijg ik hetzelfde te zien.
Als ik hierop probeer te googlen, dan krijg ik alleen maar resultaten te zien over angular components, en die heb ik nu juist niet... (dit is best jammer)
hoe kan ik dit werkend krijgen?
Ik heb later op de avond een oplossing gevonden. Vind het niet helemaal mooi, maar hier is`tie dan toch:
en dan het event afvangen in angular
Ik heb een webcomponent (geen angular component, maar een pure webcomponent, ook geen polymer) en die heb ik in mijn angular website gehangen. so far so good. het component wordt netjes getoont en reageert ook precies zoals ik verwacht. ik heb hiervoor (gedeeltelijk https://alligator.io/angular/using-custom-elements/) als voorbeeld voor gebruikt.
toen wilde ik gaan databinden... en daar loop ik nu op stuk. Mijn custom webcomponent gebruikt trouwens shadow-dom (geen idee of dat uitmaakt voor dit verhaal)
in mijn JS code (van mijn custom webcomponent) heb ik nu staan
code:
1
2
3
4
5
6
7
8
9
10
11
12
| ... this.value = svgElement.innerHTML; //console.log(this.value) laat precies zien wat ik wil hebben overigens this.dispatchEvent(new CustomEvent('valueChange', { bubbles: true, detail: +this.value })); ... get value() { return this.getAttribute('value'); } set value(newValue) { this.setAttribute('value', newValue); } |
Wat ik al gevonden of geprobeerd heb
als ik in mijn angular pagina het event 'valueChange' afvang, dan krijg ik alleen "{ "isTrusted": false }" te zien.
als ik 2way databinding probeer, dan krijg ik hetzelfde te zien.
Als ik hierop probeer te googlen, dan krijg ik alleen maar resultaten te zien over angular components, en die heb ik nu juist niet... (dit is best jammer)
hoe kan ik dit werkend krijgen?
Ik heb later op de avond een oplossing gevonden. Vind het niet helemaal mooi, maar hier is`tie dan toch:
code:
1
2
3
4
5
| broadcast(e, value) { e.preventDefault(); const event = new CustomEvent('valueChange', {detail: value, bubbles: true, composed: true}); this.shadowRoot.dispatchEvent(event); } |
en dan het event afvangen in angular
[Voor 12% gewijzigd door BasSpruit op 16-11-2018 22:07]