Как составить каждую строку таблицы html в angular

Я новичок в Ангуляре. Я хочу отображать каждую строку таблицы html как отдельный компонент, используя ngFor. Я попробовал подход, но потерпел неудачу.

Ссылка на StackBlitz — https://stackblitz.com/edit/angular-yaie9e?file=src%2Fapp%2Fapp.component.html

В приведенной выше ссылке stackblitz я визуализирую таблицу, используя один компонент для всей таблицы, и визуализирую другую аналогичную таблицу, используя два компонента. Один для основной таблицы, а другой для данных таблицы. Почему последний не отображается правильно? или, если быть точным, почему он отображается в первом столбце?

Приведите пример стекблиц с вашей проблемой

k.s. 10.04.2019 23:11

Ok. Позвольте мне составить один и вернуться.

rohit 10.04.2019 23:16

@chiril.sarajiu. Пожалуйста, проверьте эту ссылку stackblitz stackblitz.com/edit/… Код с комментариями в app.component.html работает нормально. Однако, если я попытаюсь сделать то же самое, сделав строку таблицы компонентом, я получу проблему (строка таблицы заполняется только под 1-м номером)

rohit 11.04.2019 00:00
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
2
3
1 026
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я не уверен, почему <tr> не отображается должным образом, когда он является корневым элементом компонента, может быть, кто-то еще может ответить на это. Один из способов, который сработал для меня, — использовать селектор атрибутов вместо селектора элементов.

app.component.html

...
<tbody>
  <ng-container *ngFor = "let venue of venues">
    <tr app-row [venue] = "venue"></tr>
  </ng-container>
</tbody>
...

приложение-row.component.ts

@Component({
  selector: '[app-row]',
  templateUrl: './row.component.html',
  styleUrls: [ './row.component.css' ]
})
export class RowComponent implements OnInit  { ... }

приложение-строка.component.html

<td>{{venue.venueName}}</td>
<td>{{venue.userName}}</td>
<td>{{venue.hb}}</td>

https://stackblitz.com/edit/angular-ymyu2q

В вашем примере структура дома выглядит так:

tbody
  tr
    app-row
     tr
       td
       td
       td

Итак, он отображается правильно, но таблица сломана из-за того, как работает css.

Решением было бы удалить обертку tr из app-row.component.html и изменить свойство селектора app-row.component.ts на selector: 'tr[app-row]', таким образом, вы могли бы использовать его в качестве атрибута для вашего тега тртрong> в app.component.html следующим образом:

<tr app-row *ngFor = "let venue of venues" [venue] = "venue"></tr>

Вот пример стекблиц.

Другие вопросы по теме