如何在TypeScript中正确使用装饰器进行依赖注入?

我用TS装饰器依赖注入(DI)时候,发现啊,遇到服务无法正确注入的问题。

我这边代码如这样的:
// service.ts
export class MyService {

sayHello() {
    console.log('111');
}

}

// app.ts
import { MyService } from './service';

@Component
export default class MyApp extends ViewModel {

@Inject(MyService) private myService!: MyService;

mounted() {
    this.myService.sayHello();
}

}

我期望在MyApp组件的mounted生命周期钩子中通过myService调用sayHello方法,但遇到了TypeError: Cannot read property 'sayHello' of undefined的错误。
这个是咋回事?或者大概什么原因?我应该怎么排查?

我已经确认MyService类已正确定义并可以独立使用。
也确认是否遗漏了装饰器的使用步骤或配置。
尝试使用不同的方式引入和注入服务,包括直接在组件内部实例化MyService,以验证服务本身没有问题。

我希望找到正确的依赖注入方式,使得可以在ArkTS组件中通过装饰器自动注入服务,无需手动实例化服务,以便更好地利用TypeScript提供的类型检查和依赖管理功能。

阅读 1.1k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏