Может кто-нибудь показать мне, как я могу отображать понедельник, вторник... в столбце таблицы HTML. Я хочу отобразить весь объект в табличном формате и показать его на странице HTML. Что может быть сделано?
this.dietplan = {
"week1": {
"Monday": [
{
"time": "10:00 AM",
"diet": "3 eggs",
"calories": "150"
},
{
"time": "12:00 PM",
"diet": "2 eggs",
"calories": "100"
}
],
"Tuesday": [
{
"time": "10:00 AM",
"diet": "3 eggs",
"calories": "150"
},
{
"time": "12:00 PM",
"diet": "2 eggs",
"calories": "100"
}
]
}
}
@J.Knabenschuh Я попробовал этот <tr *ngFor = "let диета диетического плана | ключевое значение"> <td >{{diet.key}}</td> </tr>, но это дает мне вывод как неделя1.
Это даст вам "week1", потому что первый слой вашей структуры - это недели. Итак, вы также хотите показать свои недели в таблице? как вы хотите показать свою таблицу? Но канал пока хороший способ, но вы должны четко понимать, что вы хотите отобразить. затем вам нужно преобразовать свою структуру данных для обработки в вашем html.
ответ - нет.
@J.Knabenschuh Я хочу показать понедельник "время": "10:00", "диета": "3 яйца", "калории": "150" "время": "12:00", "диета ": "2 яйца", "калории": "100" вторник то же, что и выше
@NegiRox, что тогда можно сделать?
будут ли у вас планы на несколько недель, такие как неделя 1 и неделя 2 и т. д., и хотите ли вы отображать их в одной таблице, если хотите, как это должно выглядеть?
@Anusha_Mamidala да, как вы сказали, у меня будет несколько недель, и в каждой неделе будут дни с понедельника по воскресенье.
мы можем показать ваш план диеты на любой день в табличном формате
@NegiRox как? не могли бы вы сказать
Не могли бы вы поделиться каким-либо графическим изображением того, как это должно выглядеть... чтобы я мог помочь вам создать таблицу
@Ануша_Мамидала ibb.co/KDqfZc4
Я обновил свою версию, соответствующую вашему фрагменту
вы можете увидеть приведенный ниже код для создания таблицы из json
var _table_ = document.createElement('table'),
_tr_ = document.createElement('tr'),
_th_ = document.createElement('th'),
_td_ = document.createElement('td');
// Builds the HTML Table out of myList json data from Ivy restful service.
function buildHtmlTable(arr) {
var table = _table_.cloneNode(false),
columns = addAllColumnHeaders(arr, table);
for (var i=0, maxi=arr.length; i < maxi; ++i) {
var tr = _tr_.cloneNode(false);
for (var j=0, maxj=columns.length; j < maxj ; ++j) {
var td = _td_.cloneNode(false);
cellValue = arr[i][columns[j]];
td.appendChild(document.createTextNode(arr[i][columns[j]] || ''));
tr.appendChild(td);
}
table.appendChild(tr);
}
return table;
}
// Adds a header row to the table and returns the set of columns.
// Need to do union of keys from all records as some records may not contain
// all records
function addAllColumnHeaders(arr, table)
{
var columnSet = [],
tr = _tr_.cloneNode(false);
for (var i=0, l=arr.length; i < l; i++) {
for (var key in arr[i]) {
if (arr[i].hasOwnProperty(key) && columnSet.indexOf(key)===-1) {
columnSet.push(key);
var th = _th_.cloneNode(false);
th.appendChild(document.createTextNode(key));
tr.appendChild(th);
}
}
}
table.appendChild(tr);
return columnSet;
}
var source = {
"Monday": [
{
"time": "10:00 AM",
"diet": "3 eggs",
"calories": "150"
},
{
"time": "12:00 PM",
"diet": "2 eggs",
"calories": "100"
}
],
"Tuesday": [
{
"time": "10:00 AM",
"diet": "3 eggs",
"calories": "150"
},
{
"time": "12:00 PM",
"diet": "2 eggs",
"calories": "100"
}
]
}
document.body.appendChild(buildHtmlTable(source["Monday"]));
см. рабочий пример здесь
попробуйте что-то вроде следующего - см. https://stackblitz.com/edit/angular-week-table
HTML
<table class = "table table-hover" [id] = "mytable">
<tbody>
<ng-container *ngFor = "let diet of dietplan | keyvalue">
<tr *ngFor = "let day of diet.value | keyvalue | sortWeekday">
<td>{{day.key}}</td>
<ng-container *ngFor = "let row of day.value">
<td>{{row.time || string}}<br> {{row.diet || string}}<br> {{row.calories || string}}<br></td>
</ng-container>
</ng-container>
</tbody>
</table>
тс
dietplan = {"week1": {
"Monday": [
{
"time": "10:00 AM",
"diet": "3 eggs",
"calories": "150"
},
{
"time": "12:00 PM",
"diet": "2 eggs",
"calories": "100"
}
],
"Tuesday": [
{
"time": "10:00 AM",
"diet": "3 eggs",
"calories": "150"
},
{
"time": "12:00 PM",
"diet": "2 eggs",
"calories": "100"
}
]
}
};
труба ц
import { Pipe, PipeTransform } from '@angular/core';
@Pipe({name: 'sortWeekday'})
export class SortWeekdayPipe implements PipeTransform {
transform(weekdays: any[]): any[] {
weekdays.sort((a, b) => {
let sortedWeekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Staurday', 'Sunday'];
return sortedWeekdays.indexOf(a.key) - sortedWeekdays.indexOf(b.key);
});
return weekdays;
}
}
Это сработало, но для меня выход дней не идет в последовательном порядке. вывод: ibb.co/s3TJ0MF
Я немного изменил ваш код: я изменил ваш угловой код следующим образом: <table class = "table table-hover" [id] = "mytable"> <tbody> <ng-container *ngFor = "let диета диеты | "> <tr *ngFor = "let day of diet.value | keyvalue"><td>{{day.key}}</td> <ng-container *ngFor = "let row of day.value"> <td >{{строка.время || строка}}<br> {{row.diet || строка}}<br> {{row.calories || string}}<br></td> </ng-container> </ng-container> </tbody> </table>
Я обновил свой пост с вашей настройкой. Чтобы получить правильный порядок, вы должны отсортировать значения. Из-за вашей структуры данных вы должны сортировать по названию дня недели. Самый простой способ добиться этого — настроить статическую сортировку вашей собственной сортировочной трубы по имени дня недели.
Теперь я также добавил канал, см. скрипку в моем посте, я также обновил исходный код. Надеюсь помог, если да, отметьте пост
Спасибо, вы спаситель :)
что ты уже пробовал? пожалуйста, поделитесь своими попытками.