【发布时间】:2016-07-29 10:38:24
【问题描述】:
我正在尝试构建自己的 Modal 组件,以便在我的 Angular2 应用程序中重复使用。我正在考虑不同的方法,我想知道是否可以创建@Component 也用作@Injectable?我正在考虑这个,因为我想为 Modal 构建一个模板,并将其保存在一个地方。
谢谢
【问题讨论】:
标签: angular angular2-directives angular2-services
我正在尝试构建自己的 Modal 组件,以便在我的 Angular2 应用程序中重复使用。我正在考虑不同的方法,我想知道是否可以创建@Component 也用作@Injectable?我正在考虑这个,因为我想为 Modal 构建一个模板,并将其保存在一个地方。
谢谢
【问题讨论】:
标签: angular angular2-directives angular2-services
默认情况下可注入组件@Component()(或@Directive())包括@Injectable()。
不要期望注入组件的特定实例。例如,这适用于constructor(@Host() private parentComponent),其中 DI 查找仅限于父级注入器,直到宿主元素的注入器。
对于您的用例,通常使用DynamicComponentLoader,它只接受组件的类型,而不是实例。依赖注入只会创建组件类的实例,但不会创建关联视图。
【讨论】:
@Parent 已从 API 中删除,应该在此处使用 @Inject。
@Inject() 和 @Parent() 是两个不同的东西。 @Inject() 允许您为 DI 指定一个偏离构造函数参数类型的键。看来您对@Parent 的看法是正确的。 @Host() 似乎最接近已删除的 @Parent()。非常感谢您指出。我会更新我的答案。我发现的唯一信息是对stackoverflow.com/q/31834527/217408的评论