Angular 2 依赖注入
Angular 2 Dependency Injection
我已经阅读了几篇关于依赖注入的文章,但似乎无法让它按照我认为应该的方式工作。根据我的阅读,您可以在 class 上使用 @Injectable 装饰器,然后像这样为 DI 创建元数据:
import {Hero} from './hero.model';
import {Injectable} from 'angular2/angular2'
@Injectable()
export class HeroService {
constructor() {
console.log('Hero Service Created');
}
}
然后在您的组件中,您可以像这样在构造函数中使用它(通过适当的导入):
constructor(heroService: HeroService) {
console.log('App Component Created');
}
但是,我收到以下错误:无法解析 AppComponent(?) 的所有参数。确保它们都有有效的类型或注释。
如果我从服务中删除 @Injectable 语法,而是使用这样的构造函数,我就能让它正常工作:
constructor(@Inject(HeroService) heroService: HeroService) {
console.log('App Component Created');
}
根据我读过的所有内容,这些应该做同样的事情,但事实并非如此。关于为什么的任何想法?我在 VS 2013、angular 2 v2.0.0-alpha.46 和 systemjs v0.19.5.
中使用 Typescript 1.6.2
确保您已在 TypeScript 配置中指定 "emitDecoratorMetadata" 选项。
我已经阅读了几篇关于依赖注入的文章,但似乎无法让它按照我认为应该的方式工作。根据我的阅读,您可以在 class 上使用 @Injectable 装饰器,然后像这样为 DI 创建元数据:
import {Hero} from './hero.model';
import {Injectable} from 'angular2/angular2'
@Injectable()
export class HeroService {
constructor() {
console.log('Hero Service Created');
}
}
然后在您的组件中,您可以像这样在构造函数中使用它(通过适当的导入):
constructor(heroService: HeroService) {
console.log('App Component Created');
}
但是,我收到以下错误:无法解析 AppComponent(?) 的所有参数。确保它们都有有效的类型或注释。
如果我从服务中删除 @Injectable 语法,而是使用这样的构造函数,我就能让它正常工作:
constructor(@Inject(HeroService) heroService: HeroService) {
console.log('App Component Created');
}
根据我读过的所有内容,这些应该做同样的事情,但事实并非如此。关于为什么的任何想法?我在 VS 2013、angular 2 v2.0.0-alpha.46 和 systemjs v0.19.5.
中使用 Typescript 1.6.2确保您已在 TypeScript 配置中指定 "emitDecoratorMetadata" 选项。