Как программно получить ссылку на элемент в Angular без использования собственных методов API / DOM (но вместо этого Angular API)? - PullRequest
0 голосов
/ 19 февраля 2020

Я довольно новичок в Angular, поэтому некоторые из моих предположений будут неверными.

Я хочу манипулировать стилем элемента во время выполнения, используя Renderer2.setStyle(elementRef, style, value, flags?).
Для этого мне нужно ссылка на элемент.

Документы Angular всегда предупреждают о том, что не нужно использовать собственный API браузера для манипулирования стилем или получения ссылки на элемент.

Например, документы для ElementRef.nativeElement четко заявить:

Используйте этот API в качестве последнего средства, когда требуется прямой доступ к DOM. Вместо этого используйте шаблонизацию и привязку данных, предоставляемые Angular. В качестве альтернативы вы можете взглянуть на Renderer2, который предоставляет API, который можно безопасно использовать, даже если прямой доступ к собственным элементам не поддерживается.

Использование прямого доступа к DOM создает тесную связь между вашим приложением и уровнями рендеринга, что создает невозможно разделить их и развернуть приложение в веб-приложении.

Теперь элементы, которые я хочу стилизовать, создаются на лету с помощью другого компонента, который я использую. Например, я не знаю, сколько из них мне нужно будет затронуть, поэтому использование подхода, основанного на аннотациях, не представляется возможным. (Дочерний компонент также будет отображаться после оценки любого селектора на основе аннотаций, я полагаю?)

В любом случае, я хочу выбрать на основе класса CSS и пользовательского свойства, значение которого я могу вычислить в время выполнения (и которое будет отличаться от элемента к элементу - ничего, с чем for l oop не справится, но трудно express в селекторе текста?):
myClass[myProp="val_1..n"]

Есть ли способ получить ссылку на элемент, используя Angular API , ie без прохождения nativeElement, например document.querySelector(...) или ElementRef.nativeElement.querySelector(...)?

I ' я в основном ищу что-то вроде RendererX.querySelector(componentRef, 'selector') - но я так понимаю Renderer2.selectRootElement(...) это не то, что я ищу ...

tldr : как мне сделать go из CSS селектора для ссылки на элемент, не используя методы API / DOM браузера, такие как document.querySelector(...) или сам вызов nativeElement? Есть ли Angular абстракция API?

...