Как объединить строку и массив в строковой интерполяции ngfor в Angular

У меня есть массив объектов, я хотел бы объединить строку и массив, отображая их в итерации ngfor.

temp: [
  {
    "value1": "as",
    "value2": "[a, b, c, d, e]",
    "value3": "alphabets"
  },
  {
    "value1": "qw",
    "value2": "[aa, bb, cc, dd, ee]",
    "value3": "alphas"
  }

Я хочу показать данные как

Столбец А Столбец Б как алфавиты, а, б, в, г е qw альфы, аа, bb, cc, dd, ee

Заранее спасибо.

Я попытался объединить строку и массив, но массив выглядит как массив, а не как строка.

Это нужно делать только в файле шаблона. В противном случае мы можем изменить объект для достижения этой цели.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
0
53
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Вы можете создать новый массив, в котором будет храниться преобразованное значение.

Здесь мы используем регулярное выражение /[\[\]]/g, которому соответствуют символы [ и ], и заменяем его пустой строкой, наконец, мы объединяем значения в массиве.

Мы можем использовать @for для создания цикла и создания строк.

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

import { Component } from '@angular/core';
import { bootstrapApplication } from '@angular/platform-browser';

@Component({
  selector: 'app-root',
  standalone: true,
  template: `
  
<table style = "width:100%">
  <tr>
    <th>Column A</th>
    <th>Column B</th> 
  </tr>
    @for(item of tempTransformed;track $index) {
  <tr>
    <td>{{item.value1}}</td>
    <td>{{item.value3}}, {{item.value2}}</td>
  </tr>
    }
</table>

  `,
})
export class App {
  temp: Array<any> =  [
    {
      value1: 'as',
      value2: '[a, b, c, d, e]',
      value3: 'alphabets',
    },
    {
      value1: 'qw',
      value2: '[aa, bb, cc, dd, ee]',
      value3: 'alphas',
    }
  ];
  tempTransformed: Array<any> = [];
  ngOnInit() {
    this.tempTransformed = this.temp.map((item: any) => {
      item.value2 = item.value2.replaceAll(/[\[\]]/g, '');
      return item;
    });
  }
}

bootstrapApplication(App);

Демо-версия Stackblitz


Тот же код, но с *ngFor

Демо-версия Stackblitz

Спасибо за быстрый ответ. Я только что узнал, что значение value2 будет представлено в виде массива и может быть выполнено с помощью ng-контейнера в файле шаблона.

Naeem Akhtar 29.08.2024 13:04

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