【问题标题】:Re-usable component with shared Model angular 4具有共享模型 angular 4 的可重用组件
【发布时间】:2018-01-15 17:01:07
【问题描述】:

我从 Angular 4 开始,我不想制作可重用的组件。 这是我的应用程序结构:

app:
    application-list:
        application.ts
        application-list.component.ts
        application-list.component.html
        application-list.component.css
        application-list-component.spec.ts

     user-list:
        user.ts
        user-list.component.ts
        user-list.component.html
        user-list.component.css
        user-most.component.spec.ts

我不想让应用程序列表可重用,但这个组件取决于 user.ts 模型。

我读到将 user.ts 类放在服务中并不是一个好习惯。 我还读到我可以在应用程序的根目录上使用共享文件夹,但我的组件将无法重复使用。

或者也许我不能,我必须创建一个通用服务,它返回一个在 application-list.component.ts 中使用的字典?

你有什么想法可以正确地做到这一点吗?

【问题讨论】:

  • model 是什么?只是一堂课吗?在列表组件中,您只需执行 import { User } from '../user-list/user'
  • 你好,只是一个类。如果我使用 import { User } from '../user-list/user' 我依赖于用户列表模块。我不想那样。
  • 你为什么不想要那个?你是什​​么意思它依赖于模块?
  • 因为我不希望我的应用程序列表不依赖于这个独特的用户模型,并且我不希望任何需要使用应用程序列表的人可以与自己的用户一起使用它。 ts 模型而不重写导入。这就是为什么我想将类放在将数据暴露给组件的服务中,但这是一种不好的做法
  • 如果您的应用程序列表是为通用方式而构建的,为什么它还需要 User 模型?

标签: angular


【解决方案1】:

首先,如果你想让你的组件可重用,你必须把他放在一个专门的模块中,或者你只能在一个模块中使用它,因为你不能多次声明一个组件。

如果您不打算在另一个应用程序中使用application-list,那么在独立组件之间共享您的模型并不是一个坏习惯。

否则由于user.ts 只是一个接口(字段列表),您可以复制它。特别是因为您的两个组件可能对相同的字段不感兴趣。最后,这些只是 javascript 对象。它们可以随意施放。

【讨论】:

  • 重复代码对我来说不是一个好的选择,如果我不想修改一个类,我必须修改另一个类。
  • 复制模型是很正常的。没有逻辑。特别是因为您的两个组件可能对相同的字段不感兴趣。否则 user.ts 必须是共享依赖项。如果你不在多个应用程序中使用你的组件,共享依赖是最好的选择。
猜你喜欢
  • 2018-09-14
  • 2017-10-22
  • 2015-08-02
  • 2021-06-04
  • 2019-03-31
  • 2018-05-04
  • 1970-01-01
  • 2018-09-27
  • 2017-05-26
相关资源
最近更新 更多