在角8中,我能够使用"@Injectable“属性创建基本组件(实际组件继承的类)。角9编译器告诉我:
组件YourComponent从BaseComponent继承它的构造函数,但是后者没有自己的角装饰器。依赖注入将无法解析BaseComponent的构造函数的参数。要么向BaseComponent添加@指令装饰符,要么向RoleSelectDialogComponent添加显式构造函数。
现在做这些事情的角度是什么?这是可行的,但看上去有些烦琐:
@Component({
selector: 'baseComponent',
template: 'no-ui'
})发布于 2020-02-07 15:25:12
线索就在信息里
Either add a @Directive decorator to BaseComponent
在它中添加一个@Directive()应该可以做到这一点。
我现在正在进行升级,我的基本组件自动添加了@Directive()装饰器。
发布于 2020-06-27 17:44:58
这可能会击中更多的人,现在角度10是出来,现在警告是一个错误。
error NG2007:类使用角度特性,但没有修饰。请添加一个明确的角度装饰。
这篇博客文章展示了一些示例https://volosoft.com/blog/what-is-new-in-angular-10
另外,请注意,“角度特征”并不仅仅意味着依赖注入。即使基类中存在ngOnDestroy(),也会触发这种情况。
我通过将ngOnDestroy()重命名为_ngOnDestroy()来解决它,并在销毁实际@Injectable()时从子类调用它。如果我再次将其子类并忘记调用_ngOnDestroy(),这似乎有点危险,但我不确定我有多少选择。
发布于 2020-09-09 14:36:56
这种模式在v9中已被废弃,在v10中不再支持。
有一种迁移通常会自动迁移这些情况( https://angular.io/guide/migration-undecorated-classes和https://angular.io/guide/migration-injectable ),但是可能没有处理继承的@Injectable()案例。
无论如何,这里的解析是将@Injectable()添加到抽象基类中。
https://stackoverflow.com/questions/60116361
复制相似问题