Javascript 如何在角度组件中使用上下文渲染模板?
我在Angular8中使用Javascript 如何在角度组件中使用上下文渲染模板?,javascript,angular,angular-i18n,Javascript,Angular,Angular I18n,我在Angular8中使用ng template来进行复数翻译,以显示组件向用户发出的通知,但我无法在附加到DOM之前获得模板的完整生成的内部HTML,因为上下文尚未绑定。 如何呈现一个带有上下文的模板,并获取其内部HTML 我尝试使用ViewContainerRef来呈现模板并将其附加到DOM中,效果很好,但我不想将某些内容附加到DOM中,稍后再阅读 模板: <ng-template #activeDeactiveSuccessMessage let-card="card">
ng template
来进行复数翻译,以显示组件向用户发出的通知,但我无法在附加到DOM之前获得模板的完整生成的内部HTML,因为上下文尚未绑定。
如何呈现一个带有上下文的模板,并获取其内部HTML
我尝试使用ViewContainerRef
来呈现模板并将其附加到DOM中,效果很好,但我不想将某些内容附加到DOM中,稍后再阅读
模板:
<ng-template #activeDeactiveSuccessMessage let-card="card">
<span i18n="@@card.notification">Notification</span>
<span i18n>{card.lockStatus, select,
LOCKED {Card number ending with {{card.number}} has been deactivated.}
UNLOCKED {Card number ending with {{card.number}} has been activated.}
other {Card number status changed to {{card.lockStatus}} }}</span>
</ng-template>
但是我不想附加到DOM,我想在附加之前在组件内部获得渲染模板。
使用下面的代码获取文本,但对于需要上下文的第二个节点,返回注释!:
let el = this.activeDeactiveSuccessMessage.createEmbeddedView({ card });
console.log(el.rootNodes[0].innerHTML); // --> Notification
console.log(el.rootNodes[1].innerHTML); // --> <!----><!----><!----><!---->
let el=this.activeDeactiveSuccessMessage.createEmbeddedView({card});
console.log(el.rootNodes[0].innerHTML);//-->通知
console.log(el.rootNodes[1].innerHTML);//-->
我希望以6236结尾的卡号的输出已停用。
用于第二个节点。问题已解决
我遇到的问题是因为我请求在运行时翻译脚本中的警报消息,我不想使用ngx translate
。
幸运的是,在angular 9中,在@angular/localize
的帮助下,这个问题已经解决,并且可以通过以下方式将文本翻译成脚本:
@组件({
模板:“{{title}}”
})
导出类HomeComponent{
title=$localize`您有10个用户';
}
欲了解更多信息,请访问
let el = this._viewContainerRef.createEmbeddedView(this.activeDeactiveSuccessMessage, { card });
let el = this.activeDeactiveSuccessMessage.createEmbeddedView({ card });
console.log(el.rootNodes[0].innerHTML); // --> Notification
console.log(el.rootNodes[1].innerHTML); // --> <!----><!----><!----><!---->