服务构造函数如何在角度2中实例化?
问题描述:
我有以下service
:服务构造函数如何在角度2中实例化?
import {Injectable} from 'angular2/core';
import {Service2} from './app.service2';
@Injectable()
export class Service1 {
constructor(service2:Service2) {
this.service2 = service2;
}
getData() {
return this.service2.getData();
}
}
我使用我的组件之一这项服务,但我不知道这如何service
收到的service2
作为参数? Tradionion,在JS我做这样的事情。
var s = new Service1(service2);
但是我在下面的文章中没有看到类似的东西,但它起作用。 https://plnkr.co/edit/PsySVcX6OKtD3A9TuAEw?p=preview
任何人都可以在此添加一些光。
答
Angular2使用dependency injection(DI)创建实例。它为您创建组件,指令,管道和服务的类实例。为此,它会检查构造函数参数及其注册的matchin实例的提供者列表,以及当DI为您调用new Xxx(...)
时,它会通过在其提供者列表中找到的所有提供者,并且一个未找到它将抛出异常。
如果一个类有参数的构造函数,类需要有一个装饰(的@Component()
之一,@Directive()
,@Pipe()
,或@Injectable()
。这表明了DI,它需要分析的构造。