Puedo usar ngIf sin un extra elemento contenedor?

<tr *ngFor="...">
  <div *ngIf="...">
    ...
  </div>
  <div *ngIf="!...">
    ...
  </div>
</tr>

No funciona en una mesa porque eso haría que HTML no válido.

3 Comentarios

  1. 19

    He encontrado un método para que en: https://angular.io/docs/ts/latest/guide/template-syntax.html#!#la estrella de la plantilla de.

    Usted puede simplemente utilizar el <template> etiqueta y reemplazar *ngIf con [ngIf] como este.

    <template [ngIf]="...">
      ...
    </template>
    • bueno, pero *ngIf sí mismo crea un template etiqueta ,por defecto angular directivas prefijo * crea una etiqueta de plantilla. por lo tanto son los mismos [ngIf] and *ngIf
    • Con *ngIf tiene un elemento dentro de la plantilla, no se si se escribe el template a ti mismo. Bajo ciertas circunstancias el elemento adicional que podría interferir.
    • Podemos poner template etiqueta en el interior, tr/td etiqueta?
    • Sí, es una especie de un elemento especial. Por definición, no está permitido, w3.org/TR/html401/struct/tables.html#h-11.2.3, pero se va a trabajar y hacer. Si Iam usando *ngIf no funciona por cierto. pero con [ngIf] que hace. ¿Puedo preguntarle si usted me puede decir por qué es eso?
    • Porque tener *ngIf="foo" es equivalente a la envoltura <template [ngIf]="foo"> etiqueta. En resumen, template + [] == *, así [] != *. * tiene sentido en cualquier elemento de excepto template.
  2. 4

    No se puede poner de div directamente dentro de tr, que haría código HTML no válido. tr sólo puede tener td/th/table elemento en it & dentro de ellos, usted podría tener también otros elementos HTML.

    Podría cambiar un poco tu código HTML para tener *ngFor más de tbody & han ngIf más de tr en sí, como el de abajo.

    <tbody *ngFor="...">
      <tr *ngIf="...">
        ...
      </tr>
      <tr  *ngIf="!...">
        ...
      </tr>
      ..
    </tbody>
    • Básicamente se trataría de resolver el problema, pero usted va a negociar fuera del núcleo de la capacidad que se obtiene con tbody. Si usted tiene una mesa grande se puede fijar la cabeza de un solo desplazamiento de la tbody. Su tbody tendría la función de tr y tr tendría la función adicional de un contenedor. Si no hay necesidad de desplazamiento y fijación de la cabeza en la parte superior esta es una solución pragmática. Mi referencia de lo que me dijo: w3.org/TR/html401/struct/tables.html#h-11.2.3

Dejar respuesta

Please enter your comment!
Please enter your name here