2016-11-27 72 views
2

我寫了下面的指令,因爲顯然ng2-translate缺少一個:ng2-translate指令:爲什麼renderer.setText不起作用?

import { Directive, ElementRef, Renderer, OnDestroy } from '@angular/core'; 
import { TranslateService } from 'ng2-translate'; 
import { Subscription } from 'rxjs'; 

@Directive({selector: '[translate]'}) 
export class TranslateDirective implements OnDestroy { 
    subscription: Subscription; 

    constructor(el: ElementRef, renderer: Renderer, translateService: TranslateService) { 
     let translateKey = el.nativeElement.attributes.translate.value; 
     this.subscription = translateService.get(translateKey).subscribe(value => { 
      el.nativeElement.innerHTML = value; // this works 
      // renderer.setText(el.nativeElement, value); // this doesn't work for some reason? 
     }); 
    } 

    ngOnDestroy(): void { 
     if (this.subscription) { 
      this.subscription.unsubscribe(); 
     } 
    } 
} 

正如你可以看到我得到它的工作使用低級別「el.nativeElement.innerHTML」,但它的API似乎暗示「renderer.setText」調用也應該起作用。 相反,它根本沒有效果。

問題:爲什麼?什麼是setText調用應該做的? 獎勵:代碼有問題,還是有很好的理由ng2-translate不包括?餿主意?

回答

相關問題