में चौड़ाई (डीओएम) तत्व की चौड़ाई कैसे प्राप्त करें, वहां कुछ समान थ्रेड हैं लेकिन मुझे अपनी आवश्यकताओं के लिए उपयुक्त उत्तर नहीं मिला। ताकि सीधे डीओएम एक्सेस को से कोणीय 2 में सख्ती से बचाया जाना चाहिए। मैं बस सोच रहा हूं कि इसके लिए सबसे अच्छा अभ्यास क्या है।Angular2
जो मैं प्राप्त नहीं करना चाहता वह वर्तमान चौड़ाई के आधार पर तत्व का आकार बदलना है।
workitemresize.component.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>
संबंधित: https://github.com/angular/angular/issues/6515
अंतहीन लूप की तरह ध्वनि के साथ वर्तमान के आधार पर आकार बदलें। –
इनिट व्यू के बाद और window.resize पर नहीं - यह ठीक होना चाहिए – kkern