2016-05-24 76 views
3

我正在尝试创建一个流体textarea,但在使用执行DOM操作的“角度2方法”时,无法获取要设置在元素上的高度。不使用Angular 2指令在元素上设置高度

组件:

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

@Directive({ 
    selector: '[fluidHeight]', 
    host: { 
    '(input)': 'setHeight()' 
    } 
}) 

export class FluidHeightDirective { 

    constructor(private _elementRef: ElementRef) {} 

    @HostBinding('style.height.px') 
    height: number; 

    setHeight() { 
    this.height = this._elementRef.nativeElement.scrollHeight + 'px'; 
    } 
} 

标记:

<textarea [(ngModel)]="model" fluidHeight></textarea> 

为什么我得到的setHeight功能的正确值,但高度不可正对textarea设置?

回答

2

如果您在

@HostBinding('style.height.px') 

使用.px你应该其添加在这里以及

this.height = this._elementRef.nativeElement.scrollHeight + 'px'; 

二者必选其一

@HostBinding('style.height') 

this.height = this._elementRef.nativeElement.scrollHeight; 
+0

好吧,它的工作原理,任何想法为什么textarea在每次击键时缩小,直到文本达到textarea的高度,然后开始像它应该的那样增长? – Chrillewoodz

+0

每次减少2px,超级怪异.. – Chrillewoodz

+0

听起来很奇怪。你能否设立一个允许调查的蹲伏者? –