Comment obtenir la largeur de (DOM) de l'Élément dans Angular2

il y a un peu similaire, les threads, mais je ne pouvais pas trouver une réponse convenable
pour mes besoins. De sorte que direct DOM l'accès doit être strictement évités
dans angular2 je me demande quel est la meilleure pratique pour cela.

Ce que je wan pas à atteindre est de redimensionnement d'un élément basé sur la largeur actuelle.

workitemresize.composante.ts

import { Directive, ElementRef, HostListener, Renderer, Input } from '@angular/core';

@Directive({
  selector: '[workItemResize]'
})

export class WorkItemResizeDirective implements ngAfterViewInit {

  private el: HTMLElement;
  private renderer: Renderer;

  constructor(el: ElementRef, public renderer: Renderer)
  { 
    this.el = el.nativeElement; 
    this.renderer = renderer;
  }  


  @HostListener('window:resize', ['$event.target']) 
  onResize() 
  { 
    this.resizeWorks();
  }

  ngAfterViewInit() {
    this.resizeWorks();
  }

  private resizeWorks(): void {
    this.renderer.setElementStyle(this.el, 'height', this.el.width); //<-- doesn't work I kow that this.el.width doesn't exist but just for demonstration purpose
    this.renderer.setElementStyle(this.el, 'height', '500'); //<-- works
  }

}

projects.template.html

<div class="posts row">
        <div class="work-item col-xs-12 col-sm-6 col-no-padding"  workItemResize *ngFor="let post of posts">

                <!-- show some fancy image -->
                <div class="img"  [ngStyle]="{'background-image':'url('+post.better_featured_image.source_url+')'}"></div>

        </div>
</div>

Liées:
https://github.com/angular/angular/issues/6515

  • Redimensionner basé sur le courant avec les sons comme une boucle sans fin.
  • pas juste après l'initialisation de la vue et de la fenêtre.redimensionner - qui devrait être bon
InformationsquelleAutor kkern | 2016-08-22