Rad*_*nov 4 javascript injectable typescript angular
我有一个Angular2应用程序,service用于从API获取数据.在这个例子之后,我想创建一个单独的文件,其中应该包含一些配置数据.我的问题是我的服务有一个@Injectable()装饰器,我不确定我是否可以provide在元数据中传递一个数组,我将在其中注入配置,如教程中所示.有人遇到过这样的问题,欢迎分享他的解决方案:)
实际上,Angular2利用分层喷射器和喷射器链接到组件.简而言之,您只能在组件(providers属性)或应用程序级别(bootstrap功能)上定义提供程序.
关于服务,他们将能够使用对发起呼叫的组件可见的提供者,但是您无法在其级别定义提供者.
这是一个示例:
Application
|
AppComponent
|
ChildComponent
getData() --- Service1 --- Service2
Run Code Online (Sandbox Code Playgroud)
在这种应用中,我们有三个注射器:
bootstrap函数的第二个参数配置的应用程序注入器AppComponent可以使用providers此组件的属性配置的注入器.它可以"看到"应用程序注入器中定义的元素.这意味着如果在此提供程序中找不到提供程序,它将自动查找此父注入程序.如果在后者中找不到,则会抛出"找不到提供者"错误.ChildComponent将遵循比相同的规则喷油器AppComponent之一.要注入为组件执行的注入链中涉及的元素,将首先在此注入器中查找提供者,然后在AppComponent一个注册器中查找提供者,最后在应用程序中查找提供者.这意味着当尝试将注入Service1到ChildComponent构造函数中时,Angular2将查看注入ChildComponent器,然后进入注册器,AppComponent最后进入应用程序.
由于Service2需要注入Service1,因此将执行相同的分辨率处理:ChildComponent注入器,AppComponent一个和应用程序.
这意味着,Service1和Service2根据使用您的需要可以在每个级别中指定providers为组件属性和的第二参数bootstrap为应用注射器功能.
这个答案可以帮助你:
| 归档时间: |
|
| 查看次数: |
1974 次 |
| 最近记录: |