Можно ли получить точный элемент местоположения / контекста / обертывания шаблона html, где канал используется внутри шаблона (без необходимости передавать трубе какие-либо дополнительные аргументы)?

Я попытался вставить ElementRef в конструктор канала, но это возвращает весь элемент компонента, а не точное местоположение DOM.

Пример шаблона:

...
<div>
    {{ 'blah' | myPipe}}
</div>
...

Я хотел бы получить доступ к псевдоэлементу именно там, где оценивается канал или обтекание div.

Текущая версия Angular 8

2
Stevanicus 12 Фев 2020 в 19:03

2 ответа

Лучший ответ

В Angular 9 Ivy элемент ElementRef, введенный в трубу, указывает на то место, где эта труба фактически используется.

< Сильный > test.pipe.ts

@Pipe({
  name: 'test',
})
export class TestPipe implements PipeTransform {
  constructor(private el: ElementRef) {
    console.info("-->", this.el);
  }
...

< Сильный > HTML

<div class="bob">
  {{ 'mystring' | test }}
</div>

enter image description here

Пример работы с Ng

2
yurzui 13 Фев 2020 в 17:09

В общем, Pipe - это функция, облегчающая манипулирование входными данными перед привязкой к целевому свойству. Он не предназначен для манипулирования DOM. Если вы хотите манипулировать DOM, сделайте это в Компоненте или определите для него Директиву.

0
Ashish Patel 12 Фев 2020 в 16:25