我编写了以下指令,因为显然 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 不包含一个很好的理由?馊主意?

最佳答案



还有更多来自该评论:

关于angular - ng2-translate 指令 : why does renderer. setText 不起作用?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40834900/

10-12 16:22