Angular 仅当字符串不为空时,才能在URL中插入字符串吗?

Angular 仅当字符串不为空时,才能在URL中插入字符串吗?,angular,string,typescript,url,get,Angular,String,Typescript,Url,Get,我试图从数据库中获取数据。我可以包括一些可选部分,使搜索更加具体 我有一个这样的物体: { title: "wonderland", aliases: "", ... } 现在我想为GET请求创建一个URL getResults(obj){ return this.http.get(`${this.url}/title=${obj.title}&aliases=${obj.aliases}`) } 现在我想删除部分&aliases=${obj.aliases},因

我试图从数据库中获取数据。我可以包括一些可选部分,使搜索更加具体

我有一个这样的物体:

{
  title: "wonderland",
  aliases: "",
  ...
}
现在我想为GET请求创建一个URL

getResults(obj){
    return this.http.get(`${this.url}/title=${obj.title}&aliases=${obj.aliases}`)
}
现在我想删除部分
&aliases=${obj.aliases}
,因为如上所述,属性别名在本例中为空。 如果属性title为空,我想删除
title=${obj.title}


你会怎么做?

试试这个。比你想做的更好

let object = {
  title: "wonderland",
  aliases: ""
}

function addOptionalParameters(urlPath) {
  let count = 0;

  for(let param in object){
    if (object[param]) {
      if (count === 0 ) {
        urlPath = `${urlPath}/${param}=${object[param]}`
      } else {
        urlPath = `${urlPath}&${param}=${object[param]}`
      }
      count ++;
    }
  }

  return urlPath;
}

function getResults(obj) {
  let urlPath = `${this.url}`
  urlPath = addOptionalParameters(urlPath)

  return this.http.get(`${urlPath}`)
}

试试这个。比你想做的更好

let object = {
  title: "wonderland",
  aliases: ""
}

function addOptionalParameters(urlPath) {
  let count = 0;

  for(let param in object){
    if (object[param]) {
      if (count === 0 ) {
        urlPath = `${urlPath}/${param}=${object[param]}`
      } else {
        urlPath = `${urlPath}&${param}=${object[param]}`
      }
      count ++;
    }
  }

  return urlPath;
}

function getResults(obj) {
  let urlPath = `${this.url}`
  urlPath = addOptionalParameters(urlPath)

  return this.http.get(`${urlPath}`)
}

你可以这样做:

{
  title: "wonderland",
  aliases: "",
  ...
}

getAliasQuery(别名){
if(别名)返回“&aliases=${aliases}”;
返回“”;
}
获取结果(obj){
返回this.http.get(`${this.url}/title=${obj.title}${getAliasQuery(obj.aliases)}`)
}

您可以这样做:

{
  title: "wonderland",
  aliases: "",
  ...
}

getAliasQuery(别名){
if(别名)返回“&aliases=${aliases}”;
返回“”;
}
获取结果(obj){
返回this.http.get(`${this.url}/title=${obj.title}${getAliasQuery(obj.aliases)}`)
}

我有很多可选字符串。我是否必须为每个属性使用if语句?不,创建一个函数。函数应根据状态接受输入和追加。我将根据更新的版本进行更新。此外,您需要确保对象键用作参数键,否则逻辑将无法工作嘿,谢谢。我找到了解决办法。它与您使用的方法相同,但唯一的区别是我使用Object.Entries。我有很多可选字符串。我是否必须为每个属性使用if语句?不,创建一个函数。函数应根据状态接受输入和追加。我将根据更新的版本进行更新。此外,您需要确保对象键用作参数键,否则逻辑将无法工作嘿,谢谢。我找到了解决办法。它与您使用的方法相同,但唯一的区别是我使用Object.entries