Я пытаюсь получить доступ к элементу DOM за пределами элемента текущей директивы .. для поведения, подобного изменению размера, используя внешний элемент в качестве дескриптора и не изменять целевую разметку, что очень важно, особенно не используя переключение, как <ng-content>
.
Что я делаю сейчас является то, что я думаю, что немного неортодоксальные, как с помощью BrowserDomAdapter
: angular2: управлять элементом снаружи директивы
import {Directive, Input, HostListener} from 'angular2/core';
import {BrowserDomAdapter} from 'angular2/platform/browser';
@Directive
({
selector: '[resizable-handle]',
providers: [BrowserDomAdapter]
})
export class ResizableHandle
{
// get selector from actual directive selector attribute
@Input('resizable-handle') resizableSelector: string;
constructor(private _domAdapter: BrowserDomAdapter){}
@HostListener('mousedown', ['$event'])
startResize(e: MouseEvent)
{
this._domAdapter.query(this.resizableSelector); //... manipulate this native element
}
//... and so on...
}
И шаблон выглядит следующим образом:
<a [resizable-handle]="'.target-container'"> ... </a>
<!-- ...somewhere further, on a different level, the target I don't want to touch in order to get this working... -->
<div class="target-container"> ... </div>
В чем проблема с '' в вашем случае? –