2017-11-28 8 views
0

각도 1.5/4 하이브리드 응용 프로그램의 각도 4 모듈에 구형 1.5 서비스를 주입하려고합니다. 나는 그것을 공개하는 경우, 내가 MyService 내가 제공하는 방법을 모르는 PARAM을 기대 new MyService() 때문으로 초기 할 수있는 방법이 없기 때문에필자의 경우 모듈을 서비스에 삽입하는 방법은 무엇입니까?

MyService은 정적 인 방법을 사용합니다.

내 클래스 (내-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; 

내 모듈

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 {} 

는 기본적으로 나는 정적 메서드에 내 이전 서비스를 inejct하는 방법을 잘 모르겠습니다. 어떤 도움? 고마워요!

답변

1

모듈을로드 할 때만 코드를 실행해야하는 경우. 이 코드를 모듈 생성자 안에 넣습니다.

당신은 또한 서비스에서 static을 제거해야하는 MyModule

export class MyModule { 
    constructor(MyService service) { 
     console.log(service.getMyUrl()); 
    } 
} 

의 생성자에 서비스를 주입해야합니다. 주사 가능한 서비스에는 정적 메소드를 사용하지 마십시오.