Angular2,构造函数DI抛出异常

时间:2016-06-21 16:28:49

标签: dependency-injection typescript angular

我刚开始使用Angular2。我已经阅读了Angular2网站上的所有导师,并开始研究我的项目并立即陷入困境。

以下是来源。

app.ts:

import { Component }            from '@angular/core';
import { bootstrap }            from '@angular/platform-browser-dynamic';
import { ApiClient }            from './services/api-client';

@Component({
  selector: 'app',
  template: 'Hello',
  providers: [ApiClient]
})
export class AppComponent { constructor(private apiClient: ApiClient) { } }

bootstrap(AppComponent);

API-client.ts:

import { Injectable } from '@angular/core'

@Injectable()
export class ApiClient {
    public login(username: string, password: string, rememberMe: boolean) : boolean {
    if (username == 'testuser' && password == 'password')
        return true;
    else
        return false;
}
}

这个简单的源代码给了我一个非常奇怪的例外: EXCEPTION:错误:未捕获(在承诺中):TypeError:dep为null

如果删除构造函数DI,则异常消失。

过去4个小时我一直在努力解决它,并且没有任何想法来解决它。另一个奇怪的事情是异常消息是无用的。

感谢。

更新

通过构造函数DI我提到了这个:

constructor(private apiClient: ApiClient) { }

更新2

我用Component({})替换了Injectable(),现在它完美无缺。这是什么意思?破碎的本地Angular2源或某种错误配置?

2 个答案:

答案 0 :(得分:0)

尝试:

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

...
    export class AppComponent { 

         constructor(@Inject(ApiClient) apiClient: ApiClient) { } 
    }

如果您有ApiClient类的构造函数,可能值得展示它。

答案 1 :(得分:0)

固定!!!

出于某种原因" node_modules \ es6-shim"失踪了!

我不知道为什么Firefox没有通知我这件事。 在Chrome中启动了网络应用,并注意到有关缺少JS参考的警告。

执行" npm install es6-shim"现在它按预期工作了!