Angular2:Angular2:カスタムディレクティブで要素の内容を変更する方法は?
カスタムディレクティブが適用されているタグの内容/ innerHTML
を変更しようとしています。
序文:
私はそれがすべて変換されたオブジェクトの値がローカルオブジェクトと更新にロードし、DBからデータを引き出し、私のプロジェクトのための翻訳機能をうまくしようとしています。最初に私はパイプで試しましたが、パイプが不純でない限り(パフォーマンスの低下に伴います)、新しい翻訳が到着したときに値を更新する方法はありません(this questionのようなもの)。次の行にはディレクティブがありますが、コード内のフットプリントが大きくなります。
は、私が試したこと:どんなことなく、私は設定ディレクティブの下でタグの内容をすべて上記のバリエーションを試してみた
@Directive({
selector: '[i18n]'
})
export class I18nDirective
{
@Input() set i18n(key: string) {
this.el.nativeElement.innerHTML = Translations.get(key);
this.viewContainer.element.nativeElement.innerHTML = Translations.get(key);
this.templateRef.elementRef.nativeElement.innerHTML = Translations.get(key);
this.renderer.setElementProperty(this.el.nativeElement, 'innerHTML', Translations.get(key));
this.renderer.setElementProperty(this.viewContainer.element.nativeElement, 'innerHTML', Translations.get(key));
this.renderer.setElementProperty(this.templateRef.elementRef.nativeElement, 'innerHTML', Translations.get(key));
this.viewContainer.createEmbeddedView(this.templateRef);
}
public constructor(
private el: ElementRef,
private templateRef: TemplateRef<any>,
private viewContainer: ViewContainerRef,
private renderer: Renderer,
) { }
}
、しかし:
私はそのようなディレクティブを持っています成功。ここで
はタグです:
<span class="..." *i18n="'translation-page-title'"></span>
は、どのように私は動的にディレクティブを含むタグのinnerHTMLプロパティを変更できますか?言語が変更されると、おそらく動的に変更されますか?
ありがとうございます!
これはおそらく回答ではありませんが、翻訳に役立つ翻訳があります - > https://scotch.io/tutorials/simple-language-translation-in-angular-2-part-1 – anshuVersatile
はい、私はバックエンドAPIから翻訳を取得しており、動的な更新が必要です。パイプは、より静的/純粋であるか不完全であり、パフォーマンス上の問題があります。私が記事のようにあらかじめそれらを持っていれば、それは問題ではありません。パイプは新しいデータを意識する必要はありません。 – vuryss