Angular 2——更改组件选择器

标签 angular css-selectors angular-components

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 1 和 Objective-C 中那样为 Angular 2 组件选择器命名空间:

selector: 'initech-card'

最佳答案

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

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

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

我不希望这样的碰撞发生很多。

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

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

使用 <card>你是用第三方写的<card> ,您可以使用作为导入模块一部分的另一个组件包装第三方组件,然后改用包装器组件。

更新

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

关于Angular 2——更改组件选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39533051/

相关文章:

Angular 2 编译器-cli 和 less 或 sass

firefox - Angular2 双向绑定(bind)在 Firefox 上不起作用

javascript - 图像压缩/调整大小非常慢

CSS:在实际范围内选择第一个 child

html - CSS 选择器不工作 (~)

如果通过具有绑定(bind)的动态组件插入多个 DOM 元素,Angular 会滞后性能

javascript - 第一级之后无法访问 Angular CLI 中的嵌套组件

angular - 为什么我的自定义组件内的 radio 输入元素无法与响应式表单一起正常工作?

html - 选择每个第一个和第四个(最后一个)div

angular - 多个 ng-content