and*_*ais 1 javascript angularjs angular
我正在创建一个TranslationPipe角度2,该角度将字符串作为输入并从a获取转换TranslationService并将其返回到视图。例如:
<div>{{ 'hello world' | translate }}</div>
成为:
hej verden
我想要一种方法来更改视图的语言,并更新页面上的所有文本,而无需重新加载整个页面。有没有一种方法可以触发TranslationPipe页面上所有s甚至应用程序中所有管道的重新加载?
通常,触发管道角度的唯一方法是更改传递给它的变量。尽管输入是字符串,所以我需要手动触发触发器。
存储所有翻译文本的文本对象存储在服务中,因此我知道另一种解决方案是这样做,
<div> translationObject['hello world'] </div>
但对设计人员而言可读性较差。
与pure: false将管每次评价角运行变化检测。
@Pipe({
name: 'xxx',
pure: false
})
Run Code Online (Sandbox Code Playgroud)
认为这是相当昂贵的。
另一种方法是将语言作为附加参数传递,然后当语言更改时,Angular也会评估管道。
管道可以具有参数,即使您不需要它们(或不是全部),它们的更改也会触发管道transform功能。
// html
<p class="time-stamp">{{message.sent | timeAgo:trigger}}</p>
// component
trigger: number = 0;
ngOnInit() {
setInterval(() => this.trigger = Math.random(), 60 * 1000)
}
Run Code Online (Sandbox Code Playgroud)