您正在尝试为您的代码使用模式,仅用于类型检查,如果您使用的是您所使用的问题,则不需要使用@inject,
创建单个服务的更好方法,您可以在其中检查类型,调用方法并做任何您想做的事情,现在如果您要创建一个服务而不是提供至少一个装饰器,您可以@Component
或您可以使用@Injectable
. 像这样 -
import { Injectable } from './@angular/core';
@Injectable()
export class TestService {
name:string =null;
email:string =null;
...///
constructor(){
//do your stuff
}
}
或者你也可以这样使用 -
import { Component } from './@angular/core';
@Component({
selector: 'testService'
})
export class TestService {
name:string =null;
email:string =null;
...///
constructor(){
//do your stuff
}
}
PS: - 必须用至少一个装饰器来装饰类
现在通过这样做你已经成功地创建了一个类,现在如果这个类正在多个组件中使用,你可以像这样在引导时注入它 -
bootstrap(AppComponent, [TestService]).catch(err => console.error(err));
现在如果你在引导时注入你的服务,你不需要每次都在提供者列表中提供这个,因为 Angular 会自动为每个组件创建这个服务的实例,
但是,如果您在引导时没有注入您的服务,那么您需要导入您的服务并且还需要注入提供者列表,而不是您能够像这样使用它:-
import { Component } from './@angular/core';
import { TestService } from './TestService';
@Component({
selector: 'testService',
providers: [TestService]
})
export class AppComponent {
constructor(private service : TestService){
this.service.blabla //now you are able to use your service here
}
}
希望这一点清楚一些关于 Angular2 中的注入的要点。