Angular ng2翻译指令:为什么renderer.setText不工作?

Angular ng2翻译指令:为什么renderer.setText不工作?,angular,angular2-directives,ng2-translate,Angular,Angular2 Directives,Ng2 Translate,我编写了以下指令,因为显然缺少一条指令: import { Directive, ElementRef, Renderer, OnDestroy } from '@angular/core'; import { TranslateService } from 'ng2-translate'; import { Subscription } from 'rxjs'; @Directive({selector: '[translate]'}) export class TranslateDirec

我编写了以下指令,因为显然缺少一条指令:

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没有包含问题的原因是什么?坏主意?

这似乎是@angular 2.2.0的突破性变化。从2.1.0升级后,我遇到了同样的问题。Renderer类被列为实验类,因此我想我们可能会遇到一些不稳定性:(

还有更多的评论:

为此,只需使用
elementRef.nativeElement.textContent=…
直接的