在我的情况下,如何将服务注入模块?

Jwq*_*wqq 3 typescript angular-services angular-module angular

我正在尝试将旧的 angular 1.5 服务注入到我的 angular 1.5/4 混合应用程序中的 angular 4 模块中。

MyService,因为如果我让一个市民,我也没办法与初次它使用一个静态方法 new MyService(),因为MyService预计设置了一个param,我不知道如何提供。

我的班级 (my-service.class.ts)

import {Inject, Injectable} from '@angular/core';

@Injectable()

class MyService {
    constructor(
      @Inject('myOldService') private myOldService: any) {}

    static getMyUrl() {  
        console.log(this.myOldService); 
        // complains    
        // Property 'myOldService' does not exist on type 'typeof MyService
        return this.myOldService.getItemUrl();
    }
}

export default MyService;
Run Code Online (Sandbox Code Playgroud)

我的模块

import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';

...other import..

import MyService from './my-service.class';

console.log(MyService.getMyUrl())
//has error because getMyUrl has error.

@NgModule({
    'imports': [
        CommonModule
    ],
    'declarations': [
        MyComponent
    ],
    'providers': [
        MyService
    ]
})

export class MyModule {}
Run Code Online (Sandbox Code Playgroud)

基本上我不知道如何将我的旧服务注入静态方法。有帮助吗?非常感谢!

Rea*_*lar 7

如果您只需要在加载模块时运行代码。您将该代码放在模块的构造函数中。

您必须将您的服务注入到 MyModule

export class MyModule {
     constructor(MyService service) {
         console.log(service.getMyUrl());
     }
}
Run Code Online (Sandbox Code Playgroud)

您还必须static从服务中删除。不要对可注入服务使用静态方法。