【问题标题】:Angular: Custom pipe event handlingAngular:自定义管道事件处理
【发布时间】:2019-12-13 07:06:19
【问题描述】:

这是在一次采访中被问到的。

要求是创建一个自定义管道,如果文本的字符数超过一定数量,例如 10 个字符,该管道将返回一个以“阅读更多”链接为后缀的缩短文本。

如果单击“阅读更多”链接,则整个原始文本应显示为后缀为“阅读较少”链接。 如果单击“少读”链接,则缩短的文本应再次显示以“多读”链接为后缀。 因此,“阅读更多”和“阅读更少”链接以及短文本和原始文本应在点击链接时切换。

整个功能只能由管道实现。管道中是否可以进行事件处理?我们如何处理管道中链接的点击事件?

【问题讨论】:

  • 没有。管道不是这项工作的正确工具。一个组件是。
  • 有可能。但相当棘手!有用的链接:github.com/danrevah/ngx-pipes/blob/master/src/pipes/string/…
  • 我不知道。对于管道来说,这太符合逻辑了。既然是面试,可能他们想让你挑战一下,想看看你能不能找到反对的理由。
  • 我认为理想的方法是组合用于改变文本的管道和组件中的事件处理,通过为其维护一个标志来决定是缩短还是扩展文本。该标志可以作为参数传递给管道以相应地缩短或扩展文本。但我认为这是不可扩展的。如果在同一个模板中有多个这样的管道,那么在改变文本时,一个管道可能会对另一个管道产生副作用。

标签: angular angular-pipe


【解决方案1】:

我认为面试官不知道管道的实际用途。基本上是一个pipeshouldn't 句柄,如thesekindsofcomplexoperations。管道应该处理一些基本操作,例如

  • 将日期时间更改为区域设置
  • 修剪字符串
  • 根据条件等对数字进行排序,

最好的选择是使用Shared Component。他可以使用它在组件之间传递事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-28
    • 2019-10-12
    • 1970-01-01
    • 1970-01-01
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多