将通用服务注入组件的推荐方法是什么?例如,假设你有这个:
export class Service<T>{ ... }
现在,假设我们还有一个名为 Person 的类:
export class Person { ... }
我想将它注入一个组件中:
@Component({
selector: "frt-X",
templateUrl: "...",
providers: [Service<Person>] }) <--ERROR
export class MyComponent {
constructor(private service: Service<Person>) { }
}
我想知道是否有办法具体说明提供者类型。目前,由于模板没有转换成 JavaScript,我只是简单地传递 Service。
编辑:我正在尝试提供有关我的方案的更多信息。
假设您有两条不同的路线,映射到 2 个不同的组件中。让我们称它们为 A 和 B。现在,假设这些组件中的每一个都有一个用于加载不同组件的内部辅助路由器出口。可以这么说:
一个
C | 出线口:可装D或E
乙
F | 出线口:可装G或H
现在,假设当 D 或 E 加载类型为 Person 的对象时需要通知 A,而当 G 或 H 加载类型为 Car 的对象时需要通知 B。为了实现这一点,我使用了一个注入父组件和子组件的服务(我按照官方文档中的说明进行操作)。我考虑过使用泛型来指定要加载的对象的类型。这两种情况的代码是相同的,但是在一个地方,内部组件加载 Person 对象,而在另一个地方,内部组件加载 Car 对象。
当然,我可以只使用对象,但由于 TypeScript 支持泛型,我认为我应该使用它以获得更好的智能感知和更多的“类型安全”。
谢谢。
问候,路易斯