2015-09-27 30 views
0

我在兩個不同的文件中有兩個角度爲1的服務,並且我在第二個服務中使用第一個服務。如何在構造函數中輸入第一個服務,使打字稿和我自己快樂而不導入第一個服務?什麼是構造函數中的服務參數的正確類型和它應該來自哪裏

使用內部模塊它可以很容易,但在這種情況下,我無法正確加載文件。此外,我不能混用內部和外部模塊。

// app.module.ts

import angular from 'angular'; 

import FirstService from './first.service'; 
import SecondService from './second.service'; 

var app = angular.module('app', []); 

app.service('firstService', FirstService); 
app.service('secondService', SecondService); 

export app; 

// first.service.ts

class FirstService { 
    constructor() {} 
} 

export default FirstService; 

// second.service.ts

class SecondService { 
    constructor(firstService: ??) { } 
} 

export default SecondService; 

UPDATE

我可以讓ts很高興導入t他在第二個服務模塊:

import FirstService from './first.service'; 

class SecondService { 
    constructor(firstService: FirstService) { } 
} 

export default SecondService; 

但是它是正確的嗎?我覺得我使DI某種方式與第二服務導入模塊作爲額外只是爲類型安全的破碎...

回答

1

你只需要改變你的first.service.tssecond.service.ts模塊出口語法:

// first.service.ts

class FirstService { 
    constructor() {} 
} 

export { FirstService }; 

// second.service.ts

import { FirstService } from './first.service'; 

class SecondService { 
    constructor(firstService: FirstService) { } 
} 

export { SecondService }; 

更新

您還需要更新import語句:

import { angular } from 'angular'; 

import { FirstService } from './first.service'; 
import { SecondService } from './second.service'; 

var app = angular.module('app', []); 

app.service('firstService', FirstService); 
app.service('secondService', SecondService); 

export { app }; 
+0

但是,如果我加入到這樣的構造:firstService:FirstService,比TSC犯規認識它,即使有這樣的出口(收到錯誤:無法找到名爲' FirstService」)。 – eesdil

+0

您是否還更新了導入聲明(請參閱更新的答案)? –

+0

是的,我試過了。奇怪的是,如果我爲FirstService(例如:名稱空間服務{class FirstService {}})放置一個名稱空間,而不是找到它(例如Services.FirstService)。但在這種情況下,我不能將其作爲外部模塊導入。 – eesdil

相關問題