2017-01-10 110 views
4

我想在angular2 + typescript中編寫一個指令,使工具提示僅在省略號處於活動狀態時才顯示(僅在未完全顯示時才顯示完整文本,並以「...」結尾)。 我發現這個答案在計算器:從DOM元素中獲取文本並將其插入'標題'打字稿

show the tooltip only when ellipsis is active

現在我想要把這種jQuery函數:

要打字稿。到目前爲止,這是我得到:

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

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

export class IsEllipsisActiveDirective { 
constructor(el: ElementRef) { 
    if (el.nativeElement.classList.contains('className')) { 
     if (this.isEllipsisActive(el.nativeElement)) { 
      //el.nativeElement.attributes("title",el.nativeElement.text()); 
     } 
    } 
} 
isEllipsisActive(e: any) { 
return (e.offsetWidth < e.scrollWidth); 
    } 
} 

我無法弄清楚如何從元素中的文本,並使用打字稿傳遞給該元素的標題。 有什麼想法?

謝謝!

回答

0

根據Angular2 doc,似乎使用ElementRef進行直接DOM訪問並不安全。 您可以使用渲染器ElementRef獲取/設置一個DOM值是這樣的:

import {Renderer, ElementRef} from '@angular/core; 
... 
export class IsEllipsisActiveDirective { 
constructor { 
    private _renderer: Renderer, 
    private _el: ElementRef 
} (
    //get value 
    this._el.nativeElement.querySelector('div/p/whatever...') 
    //set value 
    this._renderer(_el.nativeElement.querySelector(tag), 'innerHTML', 'Foo') 
) 

希望這有助於。幸得這些堆棧溢出的答案:

相關問題