Búsqueda de sitios web

typescript - Angular 2, usando body como selector raíz, en lugar de my-app


¿Hay algún inconveniente en usar la etiqueta <body> en lugar de alguna etiqueta <my-app> para el componente raíz?

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';
}

(El código aquí es Dart, pero espero que sea lo suficientemente cercano a ES6, TypeScript para que otras personas lo entiendan.)

No veo esto a menudo, así que supongo que hay una buena razón para ello, pero esto me parece agradable, de lo contrario básicamente tienes dos componentes raíz, body y my-app.

Respuesta #1

Si quieres que Angular controle toda la página, simplemente usa body como selector. Vea también Cómo cambiar la clase del body mediante una clase de TypeScript (angular2)

Respuesta #2

Si usas 'body' como el selector para tu aplicación, funcionará, pero hay algunos problemas:

  • La especificación de Componentes Web dice usar elementos personalizados o atributos personalizados y no utiliza elementos HTML oficiales.

  • La guía de estilo oficial sugiere usar 'prefijo personalizado' para tus componentes como 'myComponent'. Además, si deseas usar algún linter como tslint con la configuración 'component-selector-prefix' para verificar eso, generará una advertencia por usar el selector 'body' sin prefijo.

  • Si dentro del selector (body) hay algunos elementos, estarán ocultos para Angular, tal vez quieras poner algunos 'scripts' dentro del body u otro componente, por ejemplo, 'webpack' pone los scripts al final del body, y tal vez funcione pero no como se espera...

Mejor.

Artículos relacionados