Yes, it is possible to programmatically generate query parameters.
You could maintain an array of param key/values using Object.entries
to convert an object to an array of key/value pairs, and Object.fromEntries
to convert from an array of key/value pairs back to an object.
const params = { currency: 'USD', language: 'en-US' }
// convert to [['currency', 'USD], ['language', 'en-US']]
const arrayOfParams = Object.entries(params)
// convert back to { currency: 'USD', language: 'en-US' }
const paramsObj = Object.fromEntries(arrayOfParams)
Then use HttpParams
to serialize/deserialize an object to query params:
import { HttpParams } from '@angular/common/http'
const paramsObj = { currency: 'USD', language: 'en-US'}
const params = new HttpParams({ fromObject: paramsObj })
/* Serializes the body to an encoded string,
* where key-value pairs (separated by =) are separated by &s.
*/
const queryStr = params.toString()