Використання ngIf без зайвого елемента в Angular 2


107

Чи можна використовувати ngIfбез додаткового елемента контейнера?

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

Він не працює в таблиці, тому що це зробить недійсний HTML.

Відповіді:



21

Я знайшов метод для цього на: https://angular.io/docs/ts/latest/guide/template-syntax.html#!#star-template .

Ви можете просто використовувати <template>тег і замінити *ngIfз , [ngIf]як це.

<template [ngIf]="...">
  ...
</template>

good but * ngIf itslef створює templateтег, за замовчуванням префікс кутових директив з * створює тег шаблону. тож обидва однакові[ngIf] and *ngIf
Pardeep Jain

1
Якщо у *ngIfвас є елемент всередині шаблону, ви цього не робите, якщо ви пишете templateсамі. За певних обставин додатковий елемент може втручатися.
Тік

Чи можемо ми помістити templateтег всередину, tr/ tdтег?
Панкай Паркар

Так, це свого роду особливий елемент. За визначенням це не дозволено w3.org/TR/html401/struct/tables.html#h-11.2.3, але воно буде працювати і відображатися. Якщо я використовую * ngIf btw не працює. але з [ngIf] це так. Чи можу я запитати, чи можете ви мені сказати, чому це?
sascha10000

1
@ sascha10000 Тому, що наявність *ngIf="foo"еквівалентно <template [ngIf]="foo">тегу обгортання . Словом, template+ []== *, так []! = *. *має сенс у будь-якому елементі, крім template .
Франклін Ю

4

Ви не можете помістити divбезпосередньо всередину tr, це зробило б недійсний HTML. trможе мати лише td/ th/ tableелемент у ньому та всередині них, ви можете мати інші елементи HTML.

Ви можете трохи змінити свій HTML, щоб мати *ngForнадміру tbodyта мати ngIfнад trсобою, як нижче.

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

Це в основному вирішить проблему, але ви будете торгувати основними можливостями, які ви отримуєте з tbody. Якщо у вас великий стіл, ви можете зафіксувати голову просто прокрутити тіло. Ваш tbody мав би роль tr і tr матиме роль додаткової обгортки. Якщо немає необхідності в прокручуванні та фіксації голови вгорі, це прагматичне рішення. Мій посилання на те, що я сказав: w3.org/TR/html401/struct/tables.html#h-11.2.3
sascha10000
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.