どうやらng2-translateに欠落しているため、次のディレクティブを作成しました。
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 に含まれていない正当な理由がありますか? 悪いアイデア?