【发布时间】:2017-07-21 19:31:58
【问题描述】:
在 Angular 中,我有一个通过 constructor(...) 注入的东西很少的服务。但是,该服务也位于通过调用构造函数创建的某个位置。因此,将它依赖的另一个服务添加到参数将更改 API。我想避免这种情况。
有没有办法将一个服务注入另一个服务而不将其添加到构造函数参数中?例如。现场注入?
import {Inject, Injectable} from "@angular/core";
import {
Http, Request, ConnectionBackend, RequestOptions, RequestOptionsArgs, Response, Headers,
RequestMethod
} from "@angular/http";
import {KeycloakService} from "./keycloak.service";
import {Observable} from 'rxjs/Observable';
import {EventBusService} from "../events/event-bus.service";
import {LoadingSomethingFinishedEvent, LoadingSomethingStartedEvent} from "../events/windup-event";
@Injectable()
export class WindupHttpService extends Http {
constructor(
_backend: ConnectionBackend,
_defaultOptions: RequestOptions,
private _keycloakService: KeycloakService,
// ----- This is what I want to avoid. -----
private _eventBus: EventBusService,
) {
super(_backend, _defaultOptions);
}
// ------- This is what I am looking for ---------
//@Inject()
//private _eventBus: EventBusService;
【问题讨论】:
-
根据您的更新,简短的回答是:不,Angular 的 DI 仅原生支持构造函数注入。
标签: angular typescript angular2-services angular-services