首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有@Injectable()的角9 BaseComponent

带有@Injectable()的角9 BaseComponent
EN

Stack Overflow用户
提问于 2020-02-07 15:23:37
回答 6查看 11.5K关注 0票数 14

在角8中,我能够使用"@Injectable“属性创建基本组件(实际组件继承的类)。角9编译器告诉我:

组件YourComponent从BaseComponent继承它的构造函数,但是后者没有自己的角装饰器。依赖注入将无法解析BaseComponent的构造函数的参数。要么向BaseComponent添加@指令装饰符,要么向RoleSelectDialogComponent添加显式构造函数。

现在做这些事情的角度是什么?这是可行的,但看上去有些烦琐:

代码语言:javascript
复制
@Component({
    selector: 'baseComponent',
    template: 'no-ui'
})
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2020-02-07 15:25:12

线索就在信息里

Either add a @Directive decorator to BaseComponent

在它中添加一个@Directive()应该可以做到这一点。

我现在正在进行升级,我的基本组件自动添加了@Directive()装饰器。

票数 14
EN

Stack Overflow用户

发布于 2020-06-27 17:44:58

这可能会击中更多的人,现在角度10是出来,现在警告是一个错误。

error NG2007:类使用角度特性,但没有修饰。请添加一个明确的角度装饰。

这篇博客文章展示了一些示例https://volosoft.com/blog/what-is-new-in-angular-10

另外,请注意,“角度特征”并不仅仅意味着依赖注入。即使基类中存在ngOnDestroy(),也会触发这种情况。

我通过将ngOnDestroy()重命名为_ngOnDestroy()来解决它,并在销毁实际@Injectable()时从子类调用它。如果我再次将其子类并忘记调用_ngOnDestroy(),这似乎有点危险,但我不确定我有多少选择。

票数 12
EN

Stack Overflow用户

发布于 2020-09-09 14:36:56

这种模式在v9中已被废弃,在v10中不再支持。

有一种迁移通常会自动迁移这些情况( https://angular.io/guide/migration-undecorated-classeshttps://angular.io/guide/migration-injectable ),但是可能没有处理继承的@Injectable()案例。

无论如何,这里的解析是将@Injectable()添加到抽象基类中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60116361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档