Angular 2,使用body作为根选择器,而不是my-app

Kas*_*per 12 dart typescript angular

使用<body>标记而不是<my-app>根组件的某些标记是否有任何缺点?

import 'package:angular2/angular2.dart';
@Component(
    selector: 'body',
    template: '''
      <h1>My First Angular 2 App</h1>

      <div>{{greet}}</div>
    ''',
    styles: const ['''
      :host {
        height: 100vh;
      }
      h1 {
        color: red;
      }
    '''])
class AppComponent {
  String greet = 'Hello world';
}
Run Code Online (Sandbox Code Playgroud)

(这里的代码是飞镖,但我希望它是足够接近ES6,打字稿其他人了解.)

我不经常看到这个,所以我猜它有一个很好的理由,但这对我来说似乎很好,否则你基本上有两个根组件,正文和我的应用程序.

Dam*_*ian 6

如果你使用'body'作为你的应用程序的选择器,它会工作,但有一些问题:

  • Web组件规范说使用自定义 元素自定义属性,它不使用官方html元素.

  • 官方风格指南建议为"myComponent"等组件使用"自定义前缀".此外,如果你想使用一些像tslint这样的linter和'component-selector-prefix'配置来检查它,它会抛出一个警告,使用没有前缀的'body'选择器.

  • 如果选择器(身体)里面有一些内容,他们将隐藏的角度,也许你会想要把身体或其他部件内的一些"脚本",例如"的WebPack"把脚本的底部身体,也许它会起作用但不如预期......

最好.


Gün*_*uer 5

如果您希望Angular控制整个页面,只需将其body用作选择器即可。另请参阅如何通过打字稿类(angular2)更改主体类。