Angular 在转换开始之前,如何将i18n密钥从父组件传递到子组件?

Angular 在转换开始之前,如何将i18n密钥从父组件传递到子组件?,angular,internationalization,translation,angular-i18n,angular-dynamic-components,Angular,Internationalization,Translation,Angular I18n,Angular Dynamic Components,我正在使用一个输入字段组件,我可以使用表单将它嵌入到不同的父组件中 在输入子组件中,我使用插值将i18n翻译键作为变量,我希望根据客户的选择从父组件动态生成 输入.component.ts: <div i18n="{{labelTextKey}}">{{labelText}}</div> <div> <input matInput [required]="required" [name]="name"

我正在使用一个输入字段组件,我可以使用表单将它嵌入到不同的父组件中

在输入子组件中,我使用插值将i18n翻译键作为变量,我希望根据客户的选择从父组件动态生成

输入.component.ts

<div i18n="{{labelTextKey}}">{{labelText}}</div>
<div>
    <input matInput [required]="required" 
                    [name]="name"
                    [(ngModel)]="value" 
                    [type]="type">
</div>
<app-input [labelText]="'Second name'"
           [labelTextKey]="'@@LabelSecondName'"
           [name]="'secondName'"
           [ngModel] = "secondName"
           [type] = "'text'"
</app-input>
{{labelText}
form.component.ts

<div i18n="{{labelTextKey}}">{{labelText}}</div>
<div>
    <input matInput [required]="required" 
                    [name]="name"
                    [(ngModel)]="value" 
                    [type]="type">
</div>
<app-input [labelText]="'Second name'"
           [labelTextKey]="'@@LabelSecondName'"
           [name]="'secondName'"
           [ngModel] = "secondName"
           [type] = "'text'"
</app-input>
似乎与我的更接近,但不完全相同,也没有答案。

问题已修复。解决方案:

子组件中不需要i18n标记,只需在父组件中使用它,如下所示:

<app-input i18n-labelText="@@LabelSecondName" labelText="Second name"></app-input>

因此,整个代码将如下所示:

<app-input [labelText]="'Second name'"
       i18n-labelText="@@LabelSecondName"
       [name]="'secondName'"
       [ngModel] = "secondName"
       [type] = "'text'"
</app-input>

i18n发生在构建时。因此,您不可能将动态值传递给i18n属性。真的!你是对的。这实际上就是问题所在。有没有可能解决这个问题,或者我将被迫改变我的观念。要改变整个概念需要做很多工作,因为这个应用程序真的有点庞大。嘿,我正在尝试实现你所说的答案。我运行ng xi18n,但没有创建翻译。对你有用吗?你介意看看我的吗?我也尝试这样显示:它显示在ng serve上,但生成翻译文件是空的。我现在只使用我的手机,远离我的机器。如果不急,我明天再查。当您使用translation命令运行应用程序时,命令行输出了什么?有任何错误、警告或类似的事情吗?没有,只是创建了一个空的翻译文件。感谢您抽出时间,尽管非常感谢。我会继续调查,如果我发现什么,会告诉你的。这将使子组件变得更好。