当我们将相同的参数传递给构造函数时,在提供程序中声明服务名称

时间:2017-07-04 16:59:17

标签: angular

当我们将它作为参数传递给组件构造函数

时,为什么要在提供者中声明服务名称
Unexpected error while executing: am start -n "com.example.maomei.passusersystem/com.example.maomei.passusersystem.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -D
Error while Launching activity

从上面开始,如果我们在构造函数中传递相同的内容,为什么要在提供者中声明xComponent。不是那种不情愿。

2 个答案:

答案 0 :(得分:3)

因为提供和注射是两回事。

提供指定服务实例的创建位置和方式。

注入是指定一个构造函数参数,其中需要传入服务(或其他可注入的)实例。

答案 1 :(得分:0)

providers你是什么意思?它是@Component提供商还是@NgModule提供商?

如果@Component,则不再需要它,如果你对构造函数参数使用@Inject注释(我很确定它在测试版中是必需的,但是在发布之后它很快被删除了)。但是,仍然可以在少数特殊情况下使用该方法(例如,如果您需要动态依赖,那么您可以获得Injector的本地实例,其中包含providers中列出的服务/类,但是绝对不是你的情况。或者你可以列出所有需要提供的服务并删除@Inject注释。但你仍然可以通过互联网找到大量过时的例子。

如果@NgModule - 仍然需要 - 这是Injector获取DI可用类列表的入口点。如果您未在此处提供服务,则无法通过@Inject

在构造函数中解析DI