2016-11-29 8 views
16

मेरे पास ऐसी स्थिति है जहां मुझे एक ही तत्व पर * ngIf और * ngFor निर्देश की आवश्यकता है। मुझे स्टैक ओवरलो पर बहुत सारे जवाब मिले लेकिन इस तरह की स्थिति के लिए कोई भी नहीं।* ngIf और * ngFor <td></td> तत्व

<table border="1" width="100%"> 
     <thead> 
      <tr> 
       <td *ngFor="let item of headerItems" *ngIf="item.visible">{{ item?.name }}</td> 
      </tr> 
     </thead> 
     <tbody> 
      ... 
     </tbody> 
    </table> 

मैं/छिपाने दिखाने के लिए अगर वस्तु सच को दिखाई सेट होता हैं:

मैं एक मेज जिसमें मैं ऑब्जेक्ट की श्रेणी के माध्यम से पाशन कर रहा हूँ और गतिशील रूप से शीर्ष लेख में कोशिकाओं बारे में है। इसे कैसे प्राप्त किया जा सकता है?

उत्तर

43

आप इसके लिए <ng-container> सहायक तत्व का उपयोग कर सकते हैं।

<ng-container *ngFor="let item of headerItems" > 
<td *ngIf="item.visible">{{ item?.name }}</td> 
</ng-container> 

यह डोम में नहीं जोड़ा गया है।

+1

महान उत्तर के लिए ngclass उपयोग कर सकते हैं। धन्यवाद। क्या आप इस स्थिति में वास्तव में एनजी-कंटेनर के बारे में कुछ बता सकते हैं। मैंने इसे घटकों में स्थानांतरित करने के लिए उपयोग किया है। –

+0

अगर किसी को टेबल टैग में समस्या हो रही है तो यह ठीक काम करता है। एक और विकल्प एक div टैग –

+0

कूल उत्तर के साथ तालिका को प्रतिस्थापित करना है - सभी काम। मैं बस कूदना चाहता हूं और कहूंगा कि यह एंग 2 दृष्टिकोण पूर्ण बीएस लॉल है। वाई यू यह एएनजी करते हैं? – Marko

8

गुंटर ज़ोचबॉयर का जवाब बहुत अच्छा है। मुझे एक और समाधान भी मिला है।

<td *ngFor="let item of headerItems" [hidden]="!item.visible">{{ item?.name }}</td> 

लेकिन यह एक HTML के अंदर पार्स किया जाएगा।

<template ngFor let-item [ngForOf]="headerItems "> 
    <td *ngIf="item.visible">{{ item?.name }}</td> 
</template> 

यह आप के लिए काम करेंगे:

1

आप टेम्पलेट तत्व भी उपयोग कर सकते हैं।

+3

बीटीडब्ल्यू अब इसे कोणीय 4 में '' कहा जाता है। – msanford

2

तुम भी है कि

.hidecell{ 
    display:none; 
    } 
<td *ngFor="let item of headerItems" [ngClass]="{hidecell:item.isVisible}"> 
{{ item?.name }} 
</td> 
संबंधित मुद्दे