在Angular 4中,我收到一条消息“已选择n个设备”,其中n被替换。邮件已本地化,因此在HTML中看起来像
{{'selected_message' | translate:substitutions }}
其中“ selected_message”在语言文件中具有一个条目:
'selected_message': '{{ndevices}} devices selected.'
replacements.ndevices的值经常更改。但是,当替换替换.ndevices时,转换系统不会重新运行转换,因此该消息始终显示为显示其初始值。如何强制重新运行翻译?
我尝试过的事情:
我该怎么做?
答案 0 :(得分:1)
我们不应该将可变对象用作管道的输入,因为角度检查对象的引用以检测是否有任何输入发生更改,因此,如果修改了对象的属性,角度将无法识别为新输入。因此,为了避免这种情况,我们可以使用任何形式的不可变数据结构,例如immutableJS或这种情况,如下所示,
我们应该在替代对象中设置属性,而不是在replaces.ndevices =“ something”之类的对象中设置属性。
答案 1 :(得分:0)
如果我没记错的话,您会想要一个不偷懒的烟斗。
此调整应能解决问题:
@Pipe({
name: 'flyingHeroesImpure',
pure: false
})
您可以在管道上找到更多信息,尤其是在https://angular.io/guide/pipes上的纯净和不纯净的管道上
或者,使用可观察变量为模板中的异步管道提供数据流,以确保您的html保持最新。