2016-07-06 57 views
0

有沒有辦法在控制檯中調試Angular 2依賴注入以檢查創建的服務順序?Angular2 DI調試

例如:

創建 「AuthService」 的情況下......

創建 「UserService」 的情況下......

我越來越喜歡一些奇怪的錯誤:

reflective_provider.js:240未捕獲無法解析所有參數爲 'ScaffoldStorage'(未定義,URLFileItemReader)。確保所有 參數都用Inject裝飾或具有有效類型註釋 ,並且'ScaffoldStorage'裝飾有Injectable。

也許注射器試圖AuthService(服務缺失)之前創建的MyService也許我有一個即時通訊不知道的。(我在應用20+服務,而不是可行的列出所有在這裏相互依存的服務: ()

編輯:

1 - 我忘了最簡單的辦法:在每個服務的構造函數寫 「的console.log」 ..

2 - 我只是改變了進口秩序和它工作..任何人都知道爲什麼?

# Before 
 
# ... 
 
import { AUTH_PROVIDERS } from 'src/authentication'; 
 
import { SCAFFOLD_PROVIDERS } from 'src/scaffold'; 
 
# ... 
 

 
# After 
 
# ... 
 
import { SCAFFOLD_PROVIDERS } from 'src/scaffold'; 
 
import { AUTH_PROVIDERS } from 'src/authentication'; 
 
# ... 
 

 
# Boostraping: No change 
 
bootstrap(AppComponent, [ 
 
    # ... 
 
    AUTH_PROVIDERS, 
 
    ROUTER_PROVIDERS, 
 
    SCAFFOLD_PROVIDERS, 
 
    # ... 
 
    provide(PLATFORM_DIRECTIVES, {useValue: SHARED_DIRECTIVES, multi: true}) 
 
]).catch((error: Error) => console.error(error));

+0

是'ScaffoldStorage'與'@ Injectable'裝飾? – rinukkusu

+0

是的,這是..... – felipepastorelima

回答

0

大多數時候,那是因爲你的服務的第一個構造函數參數的類型不能得到解決。

例如:

import {SomeType} from './something'; // wrong import 
import {URLFileItemReader} from './reader'; // rightimport 

@Injectable() 
export class ScaffoldStorage { 
    constructor(private service:SomeType, private reader:URLFileItemReader) { 
    (...) 
    } 
} 
+0

當「./something」不存在時,你說?在我的情況下它存在..因爲我只是改變了順序,它的工作 – felipepastorelima