仅供参考:使用angular2(2.0.0-alpha.45)和TypeScript(1.6.2)
尝试创建一个简单的服务以注入到组件中。
我得到的错误:
无法解析{ComponentName}(?)的所有参数。请确保它们都具有有效的类型或注解。
Bootstrap :
bootstrap(App, [ROUTER_PROVIDERS, HTTP_PROVIDERS]);
服务(my-service.ts):
import {Injectable} from 'angular2/angular2';
@Injectable()
export class MyService {
public doSomething() {}
}
消耗组件:
import {Component} from 'angular2/angular2';
import {MyService} from './my-service';
export class ListManager{
constructor(private myService: MyService){
console.log('myService', myService);
}
}
我试过的东西
- 在服务中:
- 使用
@Injectable
标记/取消标记服务 - 在bootstrapping中:
- 将
MyService
添加/删除到提供程序的引导列表中 - 组件内
- 将服务指定为提供者
@Component({providers: [MyService]})
- 将服务指定为绑定
@Component({bindings: [MyService]})
3条答案
按热度按时间ryoqjall1#
我想你会做:
您还必须在@Component定义中将服务指定为提供者
sg3maiej2#
尝试在你的组件中这样做:
(Pay注意构造函数中的新导入和
@Inject
)让我知道它是否对你有效。一个plunker也将有助于隔离问题。
kse8i1jr3#
**inject()**是一个可以在运行时动态获取依赖或服务的函数。它允许您在方法或属性装饰器中注入服务或依赖,或者在构造函数之外需要访问服务或依赖的任何地方。
先决条件:Angular 〉=14