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>
,您可以使用属于导入模块的另一个组件包装第三方组件,然后使用包装器组件相反。
更新
要更改根组件的选择器,另请参阅
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>
,您可以使用属于导入模块的另一个组件包装第三方组件,然后使用包装器组件相反。
更新
要更改根组件的选择器,另请参阅