Angular 2에서 추가 요소없이 ngIf 사용


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>

좋지만 * ng itslef가 template태그를 생성하면 기본적으로 *가 붙은 각도 지시어 접두사가 템플릿 태그를 생성합니다. 모두 있도록 동일[ngIf] and *ngIf
Pardeep 자이나교

1
으로 *ngIf템플릿 내부 요소를 가지고 당신이 작성하는 경우, 당신은하지 않습니다 template자신을. 특정 상황에서 추가 요소가 간섭 할 수 있습니다.
Teak

우리는 넣을 수 있습니다 template, 태그 내부 tr/ td태그?
Pankaj Parkar

예, 그것은 일종의 특별한 요소입니다. 정의에 따라 w3.org/TR/html401/struct/tables.html#h-11.2.3 은 허용 되지 않지만 작동하고 렌더링됩니다. * ng를 사용하는 경우 작동하지 않는 경우 btw. 하지만 [ngIf]는 그렇습니다. 그 이유를 말씀해 주시겠습니까?
sascha10000

1
@ sascha10000 갖는 *ngIf="foo"것은 포장 <template [ngIf]="foo">태그 와 동일하기 때문 입니다. 간단히 말해서 template+ []== *이므로 []! = *입니다. *제외한 모든 요소에서 의미가 template있습니다.
Franklin Yu

4

div내부 에 직접 넣을 수 없으므로 tr잘못된 HTML이됩니다. 그 안에 / / 요소 tr만있을 수 있으며 그 안에 다른 HTML 요소가있을 수 있습니다.tdthtable

당신은 약간이 당신의 HTML을 바꿀 수 *ngFor이상 tbody및이 ngIf를 통해 tr자체가 아래 좋아한다.

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

그것은 기본적으로 문제를 해결할 것이지만 tbody로 얻는 핵심 능력을 절충 할 것입니다. 큰 테이블이있는 경우 헤드를 고정하고 tbody를 스크롤 할 수 있습니다. 당신의 tbody는 tr의 역할을 가질 것이고 tr은 추가 래퍼의 역할을 가질 것입니다. 스크롤하여 머리를 맨 위에 고정 할 필요가 없다면 실용적인 해결책입니다. 내가 말한 것에 대한 참조 : w3.org/TR/html401/struct/tables.html#h-11.2.3
sascha10000
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.