【发布时间】:2017-09-26 14:43:33
【问题描述】:
编辑: 我想基本扩展ngx-translate提供的管道,如下:
import { Pipe, PipeTransform } from '@angular/core';
import { TranslatePipe } from "@ngx-translate/core";
@Pipe({
name: 'msg'
})
export class MsgPipe extends TranslatePipe implements PipeTransform {
transform(value: any, args: any[]): any {
return super.transform(value, args)
}
}
这仅在 pure 设置为 false 时有效,因此我认为 ngx-translate 的加载器尚未准备好。 有没有办法检查?这样我可以保持管道纯净并正常工作。
原帖(不相关):
我创建了一个简单地调用 translateService.instant 并返回结果的管道。
@Pipe({
name: 'msg',
pure: false
})
export class MsgPipe implements PipeTransform {
constructor(private translateService: TranslateService) {}
transform(value: any, args: any[]): any {
console.log('checked. val = ', value)
return this.translateService.instant(value, args);
}
}
如果不将其标记为纯:false,管道只会返回值。有了它(我认为文件加载器已经完成)。
我的问题是每个管道被调用了大约 8 次,我可以通过更改检测来告诉管道在检索到值后停止检查吗?
【问题讨论】:
-
只是一个简单的问题:为什么需要管道来管理翻译?它似乎并不实用,更像是一个不纯的管道。我相信他们使用纯管道来管理更新?您可以尝试更改使用管道的组件中的检测策略,但维护起来非常不切实际...
-
ngx-translate 提供管道,我想基本上扩展它,如我的编辑中所述
标签: angular typescript angular2-changedetection angular-pipe ngx-translate