angular - 在 Angular 中禁用 DI
问题描述
@Injectable()
我有将在服务(可注入)类中扩展的基类(没有装饰器的常规 TS 类)。但问题是——Angular 将构造函数参数作为依赖注入。它给了我一个错误,因为基类是不可注入的。
我想要这样的东西:
class BaseClass {
private param1: OtherBaseClass;
constructor(param1: OtherBaseClass) {
// Extended class should give reference to the injected service
this.param1 = param1;
}
}
@Injectable({ providedIn: 'root' })
class ExtendedBaseClass {
constructor(private extendedOtherBaseClass: ExtendedOtherBaseClass) {
super(extendedOtherBaseClass);
}
}
当然,DI 禁用应该只影响基类,而不是整个应用程序。
那可能吗?
使基类可注入不是一种选择,因为我将无法覆盖扩展类中的方法。
解决方案
好的,看来我找到了答案。
我可以在没有(并且不将此类添加到模块的提供者)的情况@Injectable()
下为基类设置装饰器。{ providedIn: 'root' }
它允许您在基类构造函数中注入语法(将在扩展类中“覆盖”),但同时,覆盖的方法也将在扩展类中工作。
推荐阅读
- javascript - 是否可以在 Antd 模态标题中添加按钮?
- .htaccess - Mod Rewrite 的 Apache 问题所有 POST 在重写之前已被重定向到 R=501 的 GET
- oracle - Oracle,检查一行是否有更改,然后在数据发生更改时更新
- javascript - 在角度 12 中多次调用 document.readystatechange?
- activemq - ActiveMQ XStream ForbiddenClassException
- javascript - 文本区域大小随浏览器而变化
- visual-studio-code - VSCode cppdbg 在使用“customLaunchSetupCommands”时丢失了选项“args”
- html - 如何修复页脚与部分重叠
- arrays - 如何在 tableView 中显示嵌套的 JSON 数据
- jmeter - 性能测试中“每秒事务数”与“每秒请求数”有什么区别?