Я довольно новичок в 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?