【发布时间】:2019-12-13 07:06:19
【问题描述】:
这是在一次采访中被问到的。
要求是创建一个自定义管道,如果文本的字符数超过一定数量,例如 10 个字符,该管道将返回一个以“阅读更多”链接为后缀的缩短文本。
如果单击“阅读更多”链接,则整个原始文本应显示为后缀为“阅读较少”链接。 如果单击“少读”链接,则缩短的文本应再次显示以“多读”链接为后缀。 因此,“阅读更多”和“阅读更少”链接以及短文本和原始文本应在点击链接时切换。
整个功能只能由管道实现。管道中是否可以进行事件处理?我们如何处理管道中链接的点击事件?
【问题讨论】:
-
没有。管道不是这项工作的正确工具。一个组件是。
-
有可能。但相当棘手!有用的链接:github.com/danrevah/ngx-pipes/blob/master/src/pipes/string/…
-
我不知道。对于管道来说,这太符合逻辑了。既然是面试,可能他们想让你挑战一下,想看看你能不能找到反对的理由。
-
我认为理想的方法是组合用于改变文本的管道和组件中的事件处理,通过为其维护一个标志来决定是缩短还是扩展文本。该标志可以作为参数传递给管道以相应地缩短或扩展文本。但我认为这是不可扩展的。如果在同一个模板中有多个这样的管道,那么在改变文本时,一个管道可能会对另一个管道产生副作用。
标签: angular angular-pipe