2016-04-02 21 views

Trả lời

4

Bạn không thể đặt div trực tiếp bên trong tr, điều đó sẽ làm cho HTML không hợp lệ. tr chỉ có thể có các thành phần td/th/table trong đó & bên trong chúng, bạn có thể có các phần tử HTML khác.

Bạn có thể thay đổi một chút HTML của bạn để có *ngFor qua tbody & có ngIf qua tr tự như dưới đây.

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

Về cơ bản nó sẽ giải quyết vấn đề nhưng bạn sẽ đánh đổi khả năng cốt lõi bạn nhận được với tbody. Nếu bạn có một cái bàn lớn, bạn có thể sửa cái đầu mà chỉ cần di chuyển con trỏ. Tbody của bạn sẽ có vai trò của tr và tr sẽ có vai trò của một wrapper bổ sung. Nếu không cần cuộn và sửa đầu ở trên thì đây là giải pháp thực dụng. Tài liệu tham khảo của tôi cho những gì tôi đã nói: https://www.w3.org/TR/html401/struct/tables.html#h-11.2.3 – sascha10000

19

Tôi đã tìm thấy phương thức cho điều đó trên: https://angular.io/docs/ts/latest/guide/template-syntax.html#!#star-template.

Bạn chỉ cần sử dụng thẻ <template> và thay thế *ngIf bằng [ngIf] như thế này.

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

tốt nhưng * ngIf itslef tạo thẻ 'template', theo mặc định tiền tố chỉ thị góc với * tạo thẻ mẫu. vì vậy cả hai đều giống nhau '[ngIf] và * ngIf' –

+1

Với' * ngIf' bạn có một phần tử bên trong khuôn mẫu, bạn sẽ không tự mình viết chính mình nếu bạn tự viết 'template'. Trong một số trường hợp, yếu tố phụ có thể can thiệp. – Teak

+0

Chúng ta có thể đặt thẻ 'template' vào trong,' tr'/'td' không? –

Các vấn đề liên quan