Angular2 DI Debug

时间:2016-07-06 15:16:49

标签: debugging dependency-injection angular

有没有办法在控制台中调试Angular 2依赖注入以检查创建的服务的顺序?

例如:

  

创建" AuthService" ...

的实例      

创建" UserService" ...

的实例

我遇到了一些奇怪的错误:

  

reflective_provider.js:240 Uncaught无法解析所有参数   ' ScaffoldStorage'(undefined,URLFileItemReader)。确保所有的   参数使用Inject进行修饰或具有有效的类型注释   那' ScaffoldStorage'用Injectable装饰。

也许注入器试图在AuthService之前创建MyService(服务缺失)或者我可能有相互依赖的服务,我不知道..(我在应用程序中有20多个服务,不可行列出所有这里:()< / p>

修改

1 - 我忘了最简单的解决方案:写&#34; console.log&#34;在每个服务的构造函数中..

2 - 我刚刚更改了导入订单并且工作正常..任何人都知道为什么?

&#13;
&#13;
# 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));
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

大部分时间,因为您的服务的第一个构造函数参数的类型无法解析。

例如:

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

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