如何将i18n与Angular Mat-Table一起使用

时间:2019-08-04 03:29:07

标签: angular mat-table

我似乎无法使用i18n和Angular的mat-table翻译动态列标题。

我尝试使用i18n-title [title] =“ field.i18n”和i18n-header [header] =“ field.18n”和i18n-table-header table-header =“ field.i18n”没有成功。

<table mat-table [dataSource]="dataSource">
      <ng-container *ngFor="let field of tableData" [matColumnDef]="field.name">
        <th mat-header-cell *matHeaderCellDef [i18n]="field.i18n">
          {{field.name}}
        </th>
        <td mat-cell *matCellDef="let element">
          {{element[field.dbField]}}
        </td>
      </ng-container>

      <tr mat-header-row *matHeaderRowDef="getDisplayedColumns();"></tr>
      <tr mat-row *matRowDef="let row; columns: getDisplayedColumns();" ></tr>
    </table>

我希望列标题使用i18n模板来自field.name。

2 个答案:

答案 0 :(得分:0)

binder.registerCustomEditor(List.class, "dates", new CustomDateListEditor()); 不是指令。它在运行时不存在。

它只是编译时使用的属性,用于提取并重新插入静态值以将其从模板转换成模板。

如果您想在运行时使用Angular i18n转换键,那么就太糟糕了,因为它不受支持。

答案 1 :(得分:0)

我认为您可以使用应用程序的localeId,并在组件中创建标签。不好,但至少可以。

constructor(@Inject(LOCALE_ID) protected localeId: string) {
      console.log(this.localeId);
}

在您的组件中,您可以根据语言环境分配标题的名称

if (this.localeId == 'de') {
/// Your code
}