我可以强制 Angular 组件的所有实例都具有属性吗?

Posted

技术标签:

【中文标题】我可以强制 Angular 组件的所有实例都具有属性吗?【英文标题】:Can I force all instances of an Angular component to have an attribute? 【发布时间】:2018-11-24 09:28:08 【问题描述】:

如果我有一个自定义组件<my-component></my-component>,我可以让它始终具有自定义属性吗?例如<my-component data-custom-attr></my-component>

【问题讨论】:

【参考方案1】:

您可以通过使用@Input 来做到这一点,如果值是null,则在ngOnInit 中触发错误

Component(
    selector: 'my-component',
    template: '<div></div>'
)
export class MyComponent 
    @Input() data-custom-attr:number; // Make this a required attribute. Throw an exception if it doesnt exist
    @Input() data-custom-attr-2:number;

    constructor()

    

    ngOnInit() 
      if(null == data-custom-attr) throw new Error("Attribute 'data-custom-attr' is required");
    

src solution

【讨论】:

以上是关于我可以强制 Angular 组件的所有实例都具有属性吗?的主要内容,如果未能解决你的问题,请参考以下文章

Angular 7 - 获取在 HTML 中声明的所有组件的组件实例

所有Ember组件实例共享变量的最佳方法是什么?

扩展 Kendo Angular 2 UI 组件并创建我们自己的具有所有 Kendo 组件功能的组件包装器

具有范围的 Angular2 指令

我可以为 Angular 6 中模块的所有子路由加载一个组件吗?

如何在 Angular 2 中强制组件重新渲染?