es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo eliminar comas en un arreglo en un proyecto Angular?

Estoy intentando llamar una lista de actores de películas; en la base de datos que hice, todos tienen comas al final de cada cadena. Cuando se llama al arreglo, el contenido se muestra con 2 comas consecutivas y me pregunto cómo puedo deshacerme de eso. He intentado utilizar .join pero no sé cómo implementarlo en HTML (soy nuevo en Angular).

Aquí están los archivos HTML y .ts:

import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { FetchApiDataService } from '../fetch-api-data.service';
import { MatDialog } from '@angular/material/dialog';
import { GenreComponent } from '../genre/genre.component';
import { DirectorComponent } from '../director/director.component';

@Component({
  selector: 'app-movie-card',
  templateUrl: './movie-card.component.html',
  styleUrls: ['./movie-card.component.css']
})
export class MovieCardComponent implements OnInit {
  movies: any[] = [];
  actors: any[] = [];
  constructor(
    public dialog: MatDialog,
    public fetchApiData: FetchApiDataService,
    public router:Router,
    ) { }

  ngOnInit(): void {
    this.getMovies();
  }

  removeCommas(): void {
    this.actors.join(' ');
  }

  getMovies(): void {
    this.fetchApiData.getAllMovies().subscribe((response: any) => {
      this.movies = response;
      console.log(this.movies);
      return this.movies;
    });
  }

  openGenreDialog(genreName: string): void {
    this.dialog.open(GenreComponent, {
      width: '280px',
      data: {
        genreName: genreName
      }
    });
  }

  openDirectorDialog(directorName: string): void {
    this.dialog.open(DirectorComponent, {
      width: '280px',
      data: {
        directorName: directorName
      }
    });
  }

}

<div style="display: flex;">
    <mat-card *ngfor="let movie of movies;" style="flex: 1 1 auto;">
        <mat-card-header>
        <mat-card-title>{{movie.Title}}</mat-card-title>
            <mat-card-subtitle>Starring: {{movie.Actors}}</mat-card-subtitle>
        </mat-card-header>
        <img src="{{movie.ImagePath}}" alt="{{movie.Title}}">
        <mat-card-actions>
            <button mat-button="" color="primary" (click)="openGenreDialog(movie.Genre.Name)">
                Genre
            </button>
            <button mat-button="" color="primary" (click)="openDirectorDialog(movie.Director.Name)">
                Director
            </button>
            <button mat-button="" color="primary">
                Synopsis
            </button>
            <mat-icon>favorite_border</mat-icon>
        </mat-card-actions>
    </mat-card>
</div>
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para eliminar las comas adicionales al final de cada cadena de actor en el array, puede utilizar el método trim(), que elimina los espacios en blanco de ambos extremos de una cadena. Modifique el método removeCommas() en la clase MovieCardComponent de la siguiente forma:

    removeCommas(): void {
      this.actors = this.actors.map(actor => actor.trim());
    }
    

    Este código utiliza el método map() para iterar sobre cada cadena de actor en el array actors, aplica el método trim() para eliminar las comas adicionales al final y devuelve un nuevo array con las cadenas modificadas. El array this.actors se actualiza con el nuevo array.

    Para llamar a este método desde la plantilla HTML, puede utilizar la vinculación de eventos (click) para dispararlo cada vez que se hace clic en un botón, por ejemplo:

    <button mat-button="" color="primary" (click)="removeCommas()">Eliminar comas</button>
    

    Este botón llamará al método removeCommas() cada vez que se haga clic en él. Asegúrese de agregar este botón a la plantilla HTML, ya sea dentro del componente app-movie-card o en un componente separado.

Comments are closed.