我寫了下面的指令,因爲顯然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不包括?餿主意?