Angular 2—更改组件选择器

Angular 2—change component selector

Angular 2 docs 说要像这样定义一个组件,对选择器名称使用魔术字符串:

import { Component } from '@angular/core';
@Component({
   selector: 'card',
   template: `
     <div class="card">{{title}}</card>
   `
})
export class Card {
   title = 'Card Title';
}

如果我这样做,我是否会坚持 <card> 作为将来使用此组件的唯一方式?一个应用程序可以只有一种类型的组件带有这个选择器吗?例如,是否可以使用第三方库中的<card>,同时使用我自己的<card>

这在 React 中很简单,因为组件名称只是变量。

import OtherCard from 'card'
const Card = title => <div className="card">{title}</div>
const Composable = title => <OtherCard><Card title={title} /></OtherCard>

我问的一个原因是这样我就可以知道是否命名空间 Angular 2 组件选择器像 Angular 1 和 Objective-C:

selector: 'initech-card'

您应该命名 Angular2 组件选择器(但不使用 ng- ;-))

我认为您不能导入包含具有相同选择器的元素的 2 个模块(未尝试)。

这将您限制在一个模块中一个具有特定选择器的组件。 如果遇到冲突,您可以将代码拆分为 2 个模块,其中一个模块从 ModuleA 导入 <card>,另一个模块从 ModuleB 导入 <card>

我没想到这种碰撞会发生很多。

编辑(根据评论更新答案)

组件是模块范围的,这使您能够将组件与具有相同选择器的第三方组件一起使用,例如问题示例中的 Composable React 组件。

要使用您通过第三方 <card> 编写的 <card>,您可以使用属于导入模块的另一个组件包装第三方组件,然后使用包装器组件相反。

更新

要更改根组件的选择器,另请参阅