You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将@Inject(MAT_DIALOG_DATA)移出TypeScript类构造器?

解决方案

对于带@Inject()装饰器的依赖注入,同样可以用inject()函数实现,无需保留构造器。直接在类属性中使用inject()传入对应的注入令牌即可:

private readonly data = inject(MAT_DIALOG_DATA);

如果需要将data设为public(和原代码一致),写法如下:

public data = inject(MAT_DIALOG_DATA);

完整示例对比

原构造器注入写法:

constructor(@Inject(MAT_DIALOG_DATA) public data: string ) {}

替换后的无构造器写法:

export class YourDialogComponent {
  public data: string = inject(MAT_DIALOG_DATA);

  // 其他组件逻辑...
}

注意事项

  • 必须在注入上下文中调用inject():比如类的属性初始化阶段、构造器内部(尽量避免),或ngOnInit之前的生命周期钩子中。
  • 若需要类型约束,可显式声明属性类型,确保类型安全。

内容的提问来源于stack exchange,提问作者The Fabio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 05:45:53