在Angular 2中混合纯净和不纯的管道

时间:2016-08-07 20:40:11

标签: angular pipes-filters

是否有可能使管道行为像不纯的管道,但不能在每个被触发的事件上执行。例如,我想创建翻译管道,仅在语言下拉列值更改

上执行

2 个答案:

答案 0 :(得分:2)

使用缓存。对于每个翻译保存原文和翻译。

对于管道的每次调用,在缓存中搜索,如果存在则使用它,否则进行翻译并保存在缓存中。

使用存储缓存的可注入服务。

当语言下拉列表更改时,清除缓存;)

答案 1 :(得分:0)

这个问题很老了。但由于尚未接受答案,请允许我加入我的想法。

您可以将parameters添加到管道中。当参数更改时,管道将调用transform函数。

正如@Javier所说,您可以使用注射服务来存储不同的翻译缓存。在transform函数中,您将检查参数并将其用作从服务获取翻译的密钥。