Angular 2 '@Component' 装饰器是不是总是需要元素名称选择器?

Posted

技术标签:

【中文标题】Angular 2 \'@Component\' 装饰器是不是总是需要元素名称选择器?【英文标题】:Does an Angular 2 '@Component' decorator always need an element name selector?Angular 2 '@Component' 装饰器是否总是需要元素名称选择器? 【发布时间】:2017-02-01 18:28:37 【问题描述】:

在此示例中,来自官方 Angular 2 文档,装饰器如下所示:

@Component(
  selector: 'my-app',
  template: '<h1>My First Angular App</h1>'
)

示例: 不希望我的 html 代码中散布非标准元素,希望 类似(注意:ng-angular 只是我的一个示例想看):

import  Component  from '@angular/core';
@Component(
  template: '<h1>Wait! Bloody wait some more.</h1>'
)
export class ListComponent  

并使用了这样的东西:

<div ng-component="List"</div>

或者只有当你想创建一个新的 HTML 元素,然后在上面的示例中为div 坚持使用普通的Listcontroller 时,才使用这样的组件装饰器?

【问题讨论】:

【参考方案1】:

并不总是需要选择器,例如。您有一个由路由器加载并显示在

中的模块的***组件

任何其他类型的组件都需要选择器。否则 Angular 将不知道它应该渲染什么组件。

我还没有听说过属性“ng-component”

[编辑] kit 在他/她的第一条评论中有效地回答了:

您必须创建一个包含模板的元素,但它不必是新的 HTML 元素,因为选择器可以是元素、[属性] 或类,例如。

<div test>

可以是带有选择器的组件的元素:'[test]'

【讨论】:

我不想知道组件是否需要选择器。我再次重申,我想知道创建新组件是否总是会产生新的 HTML 元素,或者是否有某种方法可以将组件链接到标准元素,例如 div。我说我会“更喜欢看到类似的东西”ng-component 属性。这纯粹是一个例子.. 您必须创建一个包含模板的元素,但它不必是新的 HTML 元素,因为选择器可以是元素、[属性] 或类,例如。 可以是带有选择器的组件的元素:'[test]' 哦!太好了,谢谢。我仍处于概述示例阶段,除了元素选择器之外,还没有看到有很多 Continent 中的任何一个。你应该得到比我现在给你更多的分数。请耐心等待。【参考方案2】:

组件是一个新的 HTML 元素,类似于 &lt;my-component&gt;Hello&lt;/my-component&gt;

我想你想要的是directive。

属性指令改变 DOM 元素的外观或行为。

所以你可以做类似&lt;div makeItBlue&gt;Blue stuff&lt;/div&gt;

【讨论】:

【参考方案3】:

详细说明:选择器可以是标准的 CSS 选择器,因此您的 HTML 可以不以角度为中心。

例子:

    @Component(
        selector: 'div.player-list',
        ...
    )
    export class PlayerList 
    

将匹配&lt;div class="player-list and-possibly-some-other-classes"&gt;...&lt;/div&gt;(即用您的角度模板替换 div)

【讨论】:

以上是关于Angular 2 '@Component' 装饰器是不是总是需要元素名称选择器?的主要内容,如果未能解决你的问题,请参考以下文章

Angular- 巧用@component装饰器属性

Angular2-编写一个简易的组件

扩展/装饰 Angular 2 组件和指令

Angular 中的 @Directive 与 @Component

Angular 中的 @Directive 与 @Component

Angular 中的 @Directive 与 @Component