我正在尝试将参数传递给URL。为此,我正在使用Angular HttpParams。仅当date不为null或未定义时,如何设置日期参数?
代码:
let params = new HttpParams()
.set('Id', Id)
.set('name', name)
if (startDate !== null) {
params.set('startDate', startDate.toDateString());
}
if (endDate !== null) {
params.set('endDate', endDate.toDateString());
}
答案 0 :(得分:5)
set
不会使正在运行的对象发生突变-它会返回一个具有新值集的 new对象。您可以使用以下内容:
let params = new HttpParams()
.set('Id', Id)
.set('name', name)
if (startDate != null) {
params = params.set('startDate', startDate.toDateString());
}
if (endDate != null) {
params = params.set('endDate', endDate.toDateString());
}
请注意params
对象是如何重新分配的。另请注意,使用!=
可以同时保护null
和undefined
。
答案 1 :(得分:-1)
代替使用HttpParams对象,您可以定义和更改自己的对象,并将其传递到http调用中。
let requestData = {
Id: Id,
name: name
}
if (startDate) {
//I am assuming you are using typescript and using dot notation will throw errors
//unless you default the values
requestData['startDate'] = startDate
}
if (endDate) {
requestData['endDate'] = endDate
}
//Making the assumption this is a GET request
this.httpClientVariableDefinedInConstructor.get('someEndpointUrl', { params: requestData })