Lightning Web Components, Lightning-datatable / Lightning-tree-grid DOM traversal [duplikat]

Nov 30 2020

Z API udało mi się dostać this.template.querySelector("lightning-tree-grid"), ale dotarcie do dowolnego elementu wewnętrznego zwraca pusty obiekt proxy. Za pomocą konsoli przeglądarki udaje mi się znaleźć wymagane:

this.template.querySelector("lightning-tree-grid").shadowRoot.querySelector("lightning-datatable").shadowRoot.querySelector("[aria-level='2']")

Ale nie można dotrzeć do tego w kodzie. Czy to możliwe?

https://developer.salesforce.com/docs/component-library/bundle/lightning-datatable/documentation https://developer.salesforce.com/docs/component-library/bundle/lightning-tree-grid/documentation

Odpowiedzi

1 PhilW Nov 30 2020 at 16:18

Nie możesz tego zrobić ze względu na usługę Locker Service :

Komponent może tylko przechodzić przez DOM i uzyskiwać dostęp do elementów utworzonych przez komponent w tej samej przestrzeni nazw. To zachowanie zapobiega anty-wzorcowi sięgania do elementów DOM należących do komponentów w innej przestrzeni nazw.

Wszystkie standardowe komponenty Lightning znajdują się poza twoją przestrzenią nazw.