angular - Angular 9 更新组件继承装饰器
问题描述
在 Angular 8 到 Angular 9 的更新过程中,更新脚本将组件装饰器添加到基类中。这记录在https://angular.io/guide/migration-undecorated-classes
在记录的示例中,选择器是在基类装饰器中设置的。
但是,如果您想要在基类组件的子组件中使用两个不同的选择器,您将如何进行呢?
前:
class BaseMenu {}
@Component({
selector: 'a-menu',
template: '<div></div>'
})
export class AMenu extends BaseMenu {}
@Component({
selector: 'b-menu',
template: '<div></div>'
})
export class BMenu extends BaseMenu {}
后:
@Component(???)
class BaseMenu {}
@Component({
selector: 'a-menu',
template: '<div></div>'
})
export class AMenu extends BaseMenu {}
@Component({
selector: 'b-menu',
template: '<div></div>'
})
export class BMenu extends BaseMenu {}
组件装饰器需要一个“选择器”。
解决方案
Angular 使用了大量的装饰器和元数据(@Component、@Directive、@NgModule,...)。此元数据和装饰器不会被子组件继承。因此,您可以只使用占位符选择器来填充它。请参阅https://blog.bitsrc.io/component-inheritance-in-angular-acd1215d5dd8
@Component({
selector: 'x-menu',
template: '<div></div>'
})
class BaseMenu {}
@Component({
selector: 'a-menu',
template: '<div></div>'
})
export class AMenu extends BaseMenu {}
@Component({
selector: 'b-menu',
template: '<div></div>'
})
export class BMenu extends BaseMenu {}
推荐阅读
- ios - IOS/Objective-C:如何访问括号内的 JSON
- java - (Android / Java)如果类没有活动,如何将上下文作为参数?
- jquery - 如何在 data-date 中按日期对 div 进行排序
- solidity - Solidity中映射的映射
- javascript - 我可以在不弹出的情况下更改 create-react-app 中公用文件夹的名称吗?
- azure-active-directory - Azure AD B2C Graph Api - 如何获取所有组的用户
- sql - 结合 TG_TABLE_NAME 和 now() SQL 的简单触发器
- c# - 如何在 C# 中生成包含另一个模型的模型的 JSON 模式
- ios - 在 UITableView 和自定义单元格之间传递数据并存储它
- phylogeny - 在多少个内核上运行矩阵算法?