【问题标题】:Custom filter component for multiple tables - Angular多个表的自定义过滤器组件 - Angular
【发布时间】:2023-04-10 09:25:02
【问题描述】:

我有多个表格,这些表格是根据来自我网站中不同 API 的数据填充的。对于所有表格,我想创建一个过滤器组件,其中包含相应的表格列名称和相应的过滤条件(开关、复选框、下拉菜单、文本框、日期范围、输入范围),然后单击应用。

输入特定参数后,我需要根据所选参数过滤表格。

我有 5 个表,其中包含不同的列数据(产品、客户、风险、错误、信号)。如何为所有表制作通用过滤器组件?代码逻辑在哪里写?

如何传递不同的列数据以及如何形成控件?示例:产品表过滤器需要产品名称文本框和产品活动开关以显示在过滤器组件内部。客户表过滤器需要客户区域下拉列表和客户年龄数字文本框才能显示在过滤器组件中。因此,不同的表需要不同类型的过滤器。在这种情况下如何构建一个可重用的组件?

【问题讨论】:

  • 这太宽泛了。我的建议:为一张桌子制作一个特定的过滤器组件。然后为第二个制作另一个特定的过滤器组件。然后甚至可能是第三张桌子的一张。然后查看这 2/3 组件之间的共同点,以及给定表的特定内容。看看将它重构为通用的东西是否有用。查看需要将什么作为输入传递给通用组件,以便它适用于每种特定情况。根据您的描述,您可能不应该尝试制作通用组件。
  • @JBNizet 感谢您的回复。根据您的评论,我不应该使用可重用的组件。是的,我也有同样的想法。如果我选择特定的组件架构,那么过滤器组件代码在哪里写呢?我不想用这个打扰表格代码。
  • 我不明白你在问什么。您需要在 TypeScript 文件中编写代码,就像任何其他组件一样。
  • 我的意思是,我有 x 组件有表和 y 组件也有表组件。所以,我需要为每个组件的文件夹创建 filtercomponent.ts 文件.. :)
  • 是的。所以......做它,就像你做任何其他组件一样。有什么问题?

标签: angular


【解决方案1】:

你可以制作一个组件并在你想要的地方调用它:)

好的...好主意

您可以将过滤器类型作为输入 并且您将使输入类型依赖于字段类型,例如(如果字符串:文本框,如果布尔值:switch ...等),您可以使用typeof 来确定类型。 你可以使用这样的代码知道类的属性 `导出类 showClassComponent { var classes = [ { name: 'workBookEntity', value: new WorkBookEntity() }]

whenSubmitedInHtmlForm(className: string): void {
    let c = classes.filter(class => class.name == className)[0];
    if(c) {
        let ret = [];

        for (var key in c) {
            if (c.hasOwnProperty(key)) {
                ret.push({ name: key, value: c[key] });
            }
        }

        return ret;
    }
}

// more code there

}`

您将在 Typescript 和 HTML 上使用一些条件,这取决于您的逻辑。 希望能帮到你

【讨论】:

  • 嗨拉贝亚,感谢您的回复。我实现了这个并且代码已经增长并且无法维护。因为如果我想实现任何新控件(例如:第 3 方文本框或日历或任何其他控件),我需要再次编写完整的逻辑并且它们有自己的事件,所以我需要扩展当前的控件并添加新的事件。 . omg.. 如果我想把我的代码给另一个人,我会不开心.. 为什么.. 我的架构哪里出了问题:(
  • 我认为你只需要改进你的设计模式,所以我认为你应该只为每种数据类型实现,例如 (string & char: textbox, boolean: switch, number & float: textbox, array : 选择列表 ....etc)
猜你喜欢
  • 2015-04-26
  • 2020-06-24
  • 2014-08-18
  • 2018-03-17
  • 1970-01-01
  • 2013-10-30
  • 2019-12-08
  • 1970-01-01
相关资源
最近更新 更多