一个简单的resize指令:
import { Directive, ElementRef, Input, OnInit } from '@angular/core';
@Directive({
selector: '[doResize]'
})
export class DoResizeDirective implements OnInit {
@Input('doResize') size: number;
constructor(private el: ElementRef) { }
ngOnInit() {
this.doResize(null);
}
private doResize(size: number) {
this.el.nativeElement.style.height = (size || this.size || 20) + 'px';
}
}
<div [doResize]="200"></div>
Plunk示例:
http://embed.plnkr.co/thIHksY1ZzIHVCpiLmfj/
添加您的计算应该是直接的。
如果您一直得到错误的计算,请使用以下方法检查生命周期挂钩中的各个值:
console.log(yourElement.clientHeight)
.
考虑ngDoCheck()、ngOnChanges()或@HostListener在初始页面加载或交互后的更改。
官方指南:
https://angular.io/guide/attribute-directives