javascript - 在 Angular2 中的 service 中注入(inject)服务

标签 javascript angular

我无法将(全局)服务注入(inject)另一个服务。

boot.ts

import {bootstrap} from 'angular2/platform/browser';
import {ROUTER_PROVIDERS} from 'angular2/router';
import {HTTP_PROVIDERS} from 'angular2/http';
import {AppComponent} from './app.component';
import {GlobalService} from './common/global.service';

bootstrap(AppComponent, [
    GlobalService,
    ROUTER_PROVIDERS,
    HTTP_PROVIDERS
]);

global.service.ts

import {Injectable} from 'angular2/core';

@Injectable()
export class GlobalService {
    api_url: string = 'hello';
}

api.service.ts

import {Injectable, Inject} from 'angular2/core';
import {GlobalService} from '../common/global.service';

@Injectable()
export class ApiService {
    //constructor(@Inject(GlobalService) globalService: GlobalService) { // doesnt work
    //constructor(@Inject(GlobalService) public globalService: GlobalService) { // doesnt work
    constructor(public globalService: GlobalService) { // doesnt work
        console.log(globalService); // undefined
        console.log(this.globalService); // undefined
    }

}

将 GlobalService 注入(inject)组件时效果很好。

提前谢谢您!

最佳答案

您还需要将 ApiService 添加到 Bootstrap

bootstrap(AppComponent, [
    ApiService,
    GlobalService,
    ROUTER_PROVIDERS,
    HTTP_PROVIDERS
]);

关于javascript - 在 Angular2 中的 service 中注入(inject)服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35915611/

相关文章:

forms - 如何在 Angular 4 + Redux 设置中处理表单

angular - mdc组件的基础和适配器类的实际使用

javascript - 密码强度计

c# - 正则表达式从 HTML 获取 url

javascript - 我们如何创建一个我们应该实现的对象的 'skeleton type' ?

Visual Studio 2017 中的 Angular 7 : How to deploy Angular "Build" folder along with ASP.Net Web Api

Angular:表单字段只读模式

angular - 如果我重新分配一个存储 rxjs 订阅的变量,那会取消订阅吗?

javascript - NodeJS 发送 HTTPS SOAP 请求

javascript - 根据对象数组中的值计算字符串的出现次数