是否有可能使管道行为像不纯的管道,但不能在每个被触发的事件上执行。例如,我想创建翻译管道,仅在语言下拉列值更改
上执行答案 0 :(得分:2)
使用缓存。对于每个翻译保存原文和翻译。
对于管道的每次调用,在缓存中搜索,如果存在则使用它,否则进行翻译并保存在缓存中。
使用存储缓存的可注入服务。
当语言下拉列表更改时,清除缓存;)
答案 1 :(得分:0)
这个问题很老了。但由于尚未接受答案,请允许我加入我的想法。
您可以将parameters添加到管道中。当参数更改时,管道将调用transform
函数。
正如@Javier所说,您可以使用注射服务来存储不同的翻译缓存。在transform
函数中,您将检查参数并将其用作从服务获取翻译的密钥。