Я пытаюсь перенести некоторые элементы JavaScript Polymer в AngularDart.
Мне нужно иметь возможность сделать эквивалент this.$.contentContainer.getBoundingClientRect();
(для тех, кто не знаком с Polymer, который в основном является component.getElementById("contentContainer").getBoundingClientRect()
).
Мне также нужно иметь доступ к элементу хоста для выполнения таких window.getComputedStyle(this).direction
как window.getComputedStyle(this).direction
где this
элемент-хост.
Как такие вещи обычно делаются в AngularDart?
Вы можете ввести объект под названием ElementRef
:
import 'dart:html';
class Comp {
final ElementRef _elementRef;
Comp(this._elementRef) {
final element = _elementRef.nativeElement as Element;
element.getComputedStyle(); // ...
}
}
В AngularDart 4.x мы разрешим вам вводить Element
напрямую.
В качестве альтернативы вы можете получить ссылку на определенный элемент, используя @ViewChild()
@Component(
selector: 'my-component',
template: '''
<div #contentContainer></div>
'''
)
class MyComponent implements AfterViewInit {
@ViewChild('contentContainer') ElementRef cc;
ngAfterViewInit() {
(cc.nativeElement as HtmlElement)....
}
}
См. Также угловой 2/машинописный текст: возьмите элемент в шаблоне (который применим к Дарту с незначительными изменениями типа типов справа и необязательными параметрами в {}
)