2016-12-31 88 views
3

我有以下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

任何人都可以在此添加一些光。

回答

3

Angular2使用dependency injection(DI)创建实例。它为您创建组件,指令,管道和服务的类实例。为此,它会检查构造函数参数及其注册的matchin实例的提供者列表,以及当DI为您调用new Xxx(...)时,它会通过在其提供者列表中找到的所有提供者,并且一个未找到它将抛出异常。

如果一个类有参数的构造函数,类需要有一个装饰(的@Component()之一,@Directive()@Pipe(),或@Injectable()。这表明了DI,它需要分析的构造。

相关问题