我刚开始使用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源或某种错误配置?
答案 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"现在它按预期工作了!