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.

Añade múltiples parámetros con el mismo nombre en Angular 11.

Lo que quiero hacer es agregar varios parámetros con el mismo nombre a la URL de la petición con Angular 11:

http://example.com/somepath?data=1&data=2&data=3

He visto este post, pero la respuesta aceptada no me sirve porque es para Angular 1.

Lo que he intentado es:

private getParams(value: string): HttpParams {
    const values = value.split("/");    

    const httpParams = new HttpParams();    

    values.forEach((item) => httpParams.set('value', item));    
    return httpParams;
}

y luego intento enviarlo:

public getConfig(view: string): Observable<ifoobar[]> {
    const params = this.getParams(view);
    return this.http.get<ifoobar[]>(`$somePerson/someMethod`, { params });    
}

Pero la URL que se genera no tiene los parámetros:

http://localhost:8000/api/somePerson/someMethod

¿Cómo puedo enviar parámetros con el mismo nombre?</ifoobar[]></ifoobar[]>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para enviar parámetros con el mismo nombre en Angular 11, puedes usar la clase HttpParams y su método append. Debes modificar tu función getParams para agregar los valores al parámetro en lugar de establecer un nuevo valor cada vez:

    private getParams(value: string): HttpParams {
      const values = value.split("/");
    
      let httpParams = new HttpParams();
      values.forEach((item) => {
        httpParams = httpParams.append("data", item);
      });
    
      return httpParams;
    }
    

    Luego, en tu método getConfig, puedes usar la opción params para agregar los parámetros a la URL de la solicitud:

    public getConfig(view: string): Observable<ifoobar[]> {
      const params = this.getParams(view);
      return this.http.get<ifoobar[]>(`http://example.com/somepath`, { params });
    }
    

    Esto resultará en una URL como esta:

    http://example.com/somepath?data=1&data=2&data=3
    

    donde data es el nombre del parámetro y 1, 2 y 3 son los valores.</ifoobar[]></ifoobar[]>

Comments are closed.