如何本地化Angular的MatDialog

时间:2018-04-18 21:50:25

标签: angular localization modal-dialog angular-material

如何本地化MatDialog?

这是我的代码:

//forgotpassword.component.ts

import { locale as english } from './i18n/en';
import { locale as italian } from './i18n/it';

@Component({
    selector   : 'forgot-password',
    templateUrl: './forgot-password.component.html',
})
export class ForgotPasswordComponent implements OnInit
{
    invalidCredentials: boolean = false;
    busy: boolean = false;

    constructor(
        private translationLoader: TranslationLoaderService,
        public dialog: MatDialog
    )
    {
        .
        .
        .
        this.translationLoader.loadTranslations(english, italian);
    }

    ngOnInit()
    {
      .
      .
      .
    }


    onFormSubmit()
    {
        var email = this.forgotPasswordForm.get('email').value;

        .
        .
        .

        this.dialog.open(DialogContentUserDialog, {
            data: {
                email: email
            },
        });
    }
}

@Component({
    selector   : 'dialog-content-user-dialog',
    templateUrl: 'dialog-content-user-dialog.html'
})
export class DialogContentUserDialog
{
    constructor( @Inject( MAT_DIALOG_DATA ) public data: any )
    {
    }
}

// dialog-content-user-dialog.html

<h2 mat-dialog-title>{{FGTPWD.MODALTITLE | translate}}{{data.email}}</h2>
<div mat-dialog-content>
    <p><span>&#10003;</span>{{FGTPWD.MODALSUBTITLE | translate}}</p>
</div>
<div mat-dialog-actions>
  <button mat-button mat-dialog-close>Ok</button>
</div>

管道(如{{ID.SUBID | translate}})的使用在我打开对话框的父html中正常工作(forgot-password.component.html)。

当我打开Dialog时,恰恰相反,我得到了这个:TypeError:undefined不是一个对象(评估'_co.FGTPWD.MODALTITLE')

我想我会注入本地化对象,就像“数据”对象一样,但我不知道该怎么做。

有什么想法吗?

谢谢

1 个答案:

答案 0 :(得分:0)

知道了。

抱歉,我的愚蠢错误!

我写了&#39; {{ID.SUBID | translate}}&#39;而不是&#39; {{'ID.SUBID' | translate}}&#39;

解决。