Angular 6 HttpClient仅在参数日期不为null时设置参数日期

时间:2018-09-19 14:14:27

标签: angular typescript angular6

我正在尝试将参数传递给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());
}

2 个答案:

答案 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对象是如何重新分配的。另请注意,使用!=可以同时保护nullundefined

答案 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 })