2017-12-20 8 views
0

私は省略記号と呼ばれるこのような指示文を持っています。テンプレート補間後の指示文からinnerhtmlにアクセスする方法

@Directive({ 
    selector: '[ellipsis]' 
}) 
export class EllipsisDirective implements OnInit, AfterContentInit { 

    constructor(private el: ElementRef,private renderer: Renderer2) { 
     console.log(el); 
    } 

    truncateText() { 
     let el = this.el.nativeElement; 
     var wordArray = el.innerHTML.split(' '); 
     while(el.scrollHeight > el.offsetHeight) { 
      wordArray.pop(); 
      el.innerHTML = wordArray.join(' ') + '...'; 
     } 
    } 

    ngOnInit(): void { 
    } 

    ngAfterContentInit(): void { 
     this.truncateText(); 
    } 
} 

問題はinnerHTMLが空であることである:

<p class="card-text" ellipsis>{{ description }}</p> 

そして、ここでは、ディレクティブです:私はこのようにそれを使用します。しかし元の{{ description }}はそうではありません。私は間違って何をしていますか?

+1

コンテンツをディレクティブに渡すようにしないでください。 '[ellipsis] =" description "'? – jonrsharpe

+0

ありがとうございますが、内挿後に要素の内容にアクセスする方法はありませんか? –

+1

'ngAfterViewInit'が役立ちます – yurzui

答えて

0

非常に直感的ではありませんが、ngAfterViewCheckedが動作しているようです。私はすべてのイベントを試みた。

ngAfterViewChecked() { 
    this.truncateText(); 
} 
関連する問題