2016-08-08 3 views
1

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

private _elemRef: ElementRef 

, но я хочу, чтобы передать ссылку на другой элемент в директиве. Любая помощь приветствуется.

Вот демо-код. Я использую директиву ripple.

<ul #other> 
    <li ripple>Hello</li> 
</ul> 

directive.js

@Directive({ 
    selector: '[ripple]' 
}) 
export class RippleDirective { 
    constructor(private _elemRef: ElementRef) { 
    } 

    @HostListener('click', ['$event']) 
    public onClick(event: MouseEvent) { 
    // I wan't to refer the '#other' node here 
} 
} 
+1

Пожалуйста, добавьте больше кода, который демонстрирует, что вы пытаетесь выполнить. Что такое «другой элемент» и «директива»? –

+0

Возможно это возможно. Но я был бы обеспокоен эффектами дизайна кода. Если вам нужна информация из этого элемента, вы можете написать функцию, которая читает ее в текущем компоненте, и передать эту информацию в атрибуте '[bracket] =" func() "'. Если вы хотите изменить этот элемент, вы можете посмотреть событие на своем подкомпоненте. Для других целей специализированные теги работают хорошо. – Katana314

+0

https://angular.io/docs/ts/latest/api/core/index/ViewChild-var.html –

ответ

4

Вы можете передать переменную #other шаблона к @Input():

@Directive({ 
    selector: '[ripple]' 
}) 
export class RippleDirective { 
    @Input() ripple; 

    @HostListener('click', ['$event']) 
    public onClick(event: MouseEvent) { 
    this.ripple... 
    } 
} 
<ul #other> 
    <li [ripple]="other">Hello</li> 
</ul> 
+0

Работает. Благодарю. – ritz078

Смежные вопросы