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.

¿Existe alguna forma de concatenar un parámetro de tipo cadena con el parámetro del método observer next()?

Tengo un método de la siguiente manera:

public getContentForGivenFields(fields: any) {
    this.content$.subscribe({
      next: res => {
        console.log(res.fields); // res.first_name => {primer_nombre objeto}
      }
    })
  }

Y el segundo método que llama al primero:

public getPersonName() {
    this.service.getContentForGivenFields("primer_nombre");
}

Quiero que el primer método tome su parámetro y lo utilice de la manera que mostré arriba. Si conoces otra forma, ¡por favor compártela!

¡Gracias! 🙂

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El primer método getContentForGivenFields toma como parámetro fields, que es un objeto que contiene los campos a recuperar del observable content$. En su estado actual, el método está registrando el valor de res.fields, que no es un nombre de campo válido.

    Para usar el parámetro pasado para recuperar dinámicamente el campo deseado del objeto res, puedes actualizar el método de la siguiente manera:

    public getContentForGivenFields(field: string) {
      this.content$.subscribe({
        next: res => {
          console.log(res[field]); // res['first_name'] => {primer_nombre object}
        }
      });
    }
    

    Aquí, estamos utilizando la notación de corchetes para acceder a la propiedad de res que coincide con el valor pasado como parámetro field.

    Otra forma de abordar esto sería modificar el observable content$ para que emita solo el campo deseado, eliminando la necesidad de pasar el parámetro en su totalidad:

    private firstName$ = this.content$.pipe(map(res => res.primer_nombre));
    
    public getFirstName() {
      this.firstName$.subscribe(nombre => console.log(nombre));
    }
    

    Aquí, estamos creando un nuevo observable firstName$ que mapea el observable content$ para emitir solo el campo primer_nombre. El método getFirstName se suscribe al observable firstName$ y registra el valor emitido.

Comments are closed.