我在Angular中有一个简单的服务
// service.ts
export class SimpleService {
// ...
}
// component.ts
@Component({
selector: 'my-component',
templateUrl: 'components/mycomp/mycomp.html',
providers: [
SimpleService
]
})
class MyComponent {
constructor(private ss: SimpleService) {}
}
以上代码永远不会有效。我收到错误:Uncaught Error: Can't resolve all parameters for MyComponent: (?).
但是,如果我将构造函数定义更改为:
class MyComponent {
constructor(@Inject(SimpleService) private ss: SimpleService) {}
}
然后它有效。即使文档似乎也没有使用@Inject
。从文档中我了解到,当我的提供者令牌不是类时,显式需要@Inject
;比如,尝试注入原始值,或者使用不透明的标记等等。
另外,我对打字稿很困惑。 Official documentation明确提到当@Inject()
不存在时,Injector将使用参数的类型注释。 如果在打字稿转换过程中删除了类型信息,并且在应用程序运行时发生了DI,那么Angular如何在运行时使用类型注释?我有什么遗失的吗?
答案 0 :(得分:3)
您忘了添加
1979
到1900-01-01 00:00:00
另见