Angular - 将 InnerHTML 与 TS 文件中的翻译绑定

Angular - bind InnerHTML with translate in TS file

我在绑定到 属性 以获取 html 并进行翻译时遇到问题。
我有一个内部HTML,我正在尝试映射以进行翻译。

问题是它没有按原样翻译和显示密钥。 P

下面是我的代码:-

let popupContainer = document.createElement('div');
popupContainer.innerHTML = require('html-loader!../html/myPopup.html').default;
popupContainer.addEventListener('click', clickEventHandler);
document.body.appendChild(popupContainer);

它不会翻译并显示如下:- {{'fileverse-name-label' | translate}}

HTML :-

<div class="book__filters">
  <hr />
  <form class="my____form flex-row" id="filterForm">
    <div class="me-3 col-md-3 checker__filters--field">
      <label for="fileName" class="band__form--label">{{'fileverse-name-label' | translate}}</label>
      <input
        type="text"
        class="drese__form--input colrs__filters--input"
        placeholder="Search for a file verse"
        name="fileverse"
        id="fileverse"
      />
    </div>
    <div class="me-3 col-md-3 runner__filters--field">
      <label for="chapterLabel" class="chapter__form--label">{{'chapter-label' | translate}}</label>
      <select
        class="chapter__form--input geeze__filters--input"
        name="chapterLabel"
        id="chapterLabel"
      ></select>
    </div>
  </form>
  <hr />
</div>

因此,像您所做的那样在 div 中添加 html 将“只是”将您的 html 文件添加到其中,没有任何进一步的逻辑。

但管道需要编译,因此您需要执行以下操作才能完成此工作。

我就把步骤写在这里,如果我需要提供更多信息请告诉我

使用 *ngIf

  1. 根据您提供的 html 创建一个组件(模块,component.ts,component.html)
  2. 任何需要的人都可以导入这个组件。
  3. Show/Hide 它带有 *ngIf.

使用 ViewContainerRef

  1. 根据您提供的 html 创建一个组件(模块,component.ts,component.html)
// component.ts
@Component({
  selector: 'foo-bar',
  templateUrl: '../foo-bar.component.html', // File where you've added the html
})
export class fooBarComponent {
  // ...
}
// module.ts
@NgModule({
  declarations: [fooBarComponent],
  imports: [
    CommonModule,
    TranslateModule.forChild()
  ],
  exports: [fooBarComponent],
})
export class fooBarModule {}
  1. 在需要的地方添加id
<ng-template #loaderContainer></ng-template>
  1. 通过 where-you-use-it.component.ts 文件获取此元素。
@ViewChild('loaderContainer', { read: ViewContainerRef, static: true })
  loaderContainer: ViewContainerRef
  1. 使用 ViewContainerRef createComponent() 方法向其中添加所需的元素
this.loaderContainer.createComponent(fooBarComponent)
// This will be at the same place where you initially intended to add the div
  1. 不要忘记在 where-you-use-it.module.ts
  2. 中添加 fooBarModule

额外

如果您正在尝试创建“orverlay”

然后我将使用 *ngIf 解决方案并将其添加到您的 app.component.html 文件中,就在 <router-outlet> 标记

之后