【发布时间】:2016-03-25 15:18:45
【问题描述】:
我在 Angular2 (2.0.0-beta.0) 应用程序中定义了一项服务。是这样的:
import {Injectable} from "angular2/core";
@Injectable()
export class MyService {
constructor() {
}
getSomething() {
return 'something';
}
}
我已将它列在我的主应用程序文件的 bootstrap() 函数中,以便我的代码通常可以使用它:
bootstrap(App, [MyService, SomeOtherService, ROUTER_DIRECTIVES[);
有时我无法在组件中使用该服务,即使我在组件constructor() 函数中有类似myService:MyService 的内容,如下所示:
import {MyService} from '../services/my.service';
@Component({
selector: 'my-component',
directives: [],
providers: [],
pipes: [],
template: `
<div><button (click)="doStuff()">Click Me!</button></div>
`
})
export MyComponent {
constructor(myService:MyService) {} // note the private keyword
doStuff() {
return this.myService.getSomething();
}
}
在其他地方它工作正常。在它不起作用的地方,如果我尝试访问它,我会收到一条消息:
EXCEPTION: TypeError: Cannot read property 'getSomething' of undefined
这基本上意味着服务没有被注入。
什么原因导致无法注入?
【问题讨论】:
标签: typescript angular angular2-injection angular2-services