当一个服务注入另一个服务时,将angularjs服务转换为Angular2服务
我看到一个服务(BService)注入另一个服务(AService)的代码:当一个服务注入另一个服务时,将angularjs服务转换为Angular2服务,angularjs,angular,Angularjs,Angular,我看到一个服务(BService)注入另一个服务(AService)的代码: AService.AFactory.$inject在做什么?我们为什么需要一家工厂?我可以把工厂搬走吗 我想把上面的服务转换成下面的angular 2服务。我说得对吗 import { Injectable } from '@angular/core'; import { BService } from './b.service' @Injectable() export class
AService.AFactory.$inject
在做什么?我们为什么需要一家工厂?我可以把工厂搬走吗 import { Injectable } from '@angular/core';
import { BService } from './b.service'
@Injectable()
export class AService {
constructor(private BService: BService) {
}
}
angular.module('test').service('AService', AService);
$inject
属性对函数进行注释。$inject
属性是要注入的服务名称数组
因此,代码也可以写成:
angular.module('test').service('AService', ['BService', function(bService) {
// AService logic goes here,
// injected BService may be used under bService variable
...
}]);
您的代码显示的代码与使用新的JS类和静态方法实现的代码完全相同。AFactory
,它通过其类传递给test
模块:AService.AFactory
2.您的代码正确,但最后一行是多余的。下面是一个关于依赖项注入的示例。参见src/app/heros/hero.service.ts上的服务示例:
:
然后,需要从组件或模块“提供”服务(上面的src/app/heros/heros.component.ts):
您的ng2代码可以重写为:
//a.service.ts
import { Injectable } from '@angular/core';
import { BService } from './b.service'
@Injectable()
export class AService {
constructor(private bService: BService) {
}
}
并在任何模块中注册:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import { AService } from ''./a.service'';
@NgModule({
imports: [
BrowserModule
],
declarations: [
AppComponent,
/* . . . */
],
providers: [ AService ],
bootstrap: [ AppComponent ]
})
export class AppModule { }
AService.AFactory是反模式的。这个案子需要解释一下。如果您需要在A1和A2应用程序中同时使用此文件,这是一件事。另一件事是,当您将其转换为A2时,不需要在A1中使用它。
import { Component } from '@angular/core';
import { HeroService } from './hero.service';
@Component({
selector: 'my-heroes',
providers: [ HeroService ],
template: `
<h2>Heroes</h2>
<hero-list></hero-list>
`
})
export class HeroesComponent { }
// imports here
@NgModule({
imports: [
BrowserModule
],
declarations: [
AppComponent,
CarComponent,
HeroesComponent,
/* . . . */
],
providers: [
UserService,
{ provide: APP_CONFIG, useValue: HERO_DI_CONFIG }
],
bootstrap: [ AppComponent ]
})
export class AppModule { }
import { Injectable } from '@angular/core';
import { BService } from './b.service'
@Injectable()
export class AService {
constructor(private bService: BService) {
}
}
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import { AService } from ''./a.service'';
@NgModule({
imports: [
BrowserModule
],
declarations: [
AppComponent,
/* . . . */
],
providers: [ AService ],
bootstrap: [ AppComponent ]
})
export class AppModule { }