2016-10-21 3 views
3

Я пытаюсь получить размеры DOM-элемента (heigtht/width). Что касается соображений безопасности (см. https://angular.io/docs/ts/latest/guide/security.html) Я не хочу напрямую обращаться к DOM.Angular2: Получить размеры DOM-элемента (без ElementRef)

Есть ли у кого-нибудь другая идея?

+0

Почему вы не хотите использовать ElementRef? – koningdavid

+0

Как я думал больше об этом: это не имеет значения. Две причины не использовать его: 1) Безопасность: применяется только в том случае, если я изменяю объект DOM. 2) Server-Side-Rendering: не применяется, поскольку мне пришлось бы перерегистрации при изменении ширины. – jackBot

ответ

2

Вы можете сделать это, как этот

import { Component } from '@angular/core'; 

@Component({ 
    selector: 'my-selector', 
    template: '<div #myDiv (click)=getElementDimensions(myDiv)>Hello</div>' 
}) 
export class AboutComponent { 

    constructor() { } 

    getElementDimensions(el: HTMLDivElement) { 
    console.log(el.getBoundingClientRect()) 
    } 

} 
1

Как я думал больше о моем вопросе:

На самом деле не доступ к DOM-элемента через ElementRef никакой угрозы безопасности в этом случае, как и нет (UnSafe-) через него вводятся данные.

Если вы хотите обойти ElementRef (например, для рендеринга на стороне сервера) и хотите манипулировать DOM-элементом, я рекомендую посмотреть класс Renderer.

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