我想从URL隐藏查询参数。我怎样才能达到同样的目的?

时间:2019-04-30 07:37:19

标签: angular angular2-routing

我正在一个应用程序中列出候选人列表。当我单击候选人姓名时,它应该打开一个包含候选人详细信息的新标签。

我将各自的候选人ID存储在本地存储和打开窗口的新标签中,在该窗口中,我将从本地存储中检索候选人ID并获取数据。

我面临的问题是,如果我在新标签页中打开多个候选人,则候选人ID被最新的候选人ID覆盖。因此,如果我刷新新标签中的候选人详细信息页面,则会获取最新打开的候选人的数据。

我想到了在查询参数中发送候选人ID并隐藏查询参数。

任何人都可以建议我怎么做或其他替代方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用FormData界面

public getCondidate(id: string): Observable<Condidate> {
    const formData: FormData = new FormData();
    formData.append('condidateId', id);
    return this.http.post<Condidate>(%server_Url%, formData);
}

用户可以通过在查询中查询参数“ condidateId”来检索后端中的ID。 这样,查询参数将包含condidateId,不会在使用开发人员工具并检查“网络”部分中的查询的URL售出中显示。

除非您具有登录名或身份验证机制,否则请勿将condidateId保存在localStorage中。当从数据库中检索所有候选者后列出它们时,调用onClick来打开具有相应详细信息的页面的方法应使用相应的ID进行调用。例如

<div
  <ul>
    <li *ngFor="condidate of condidates">
      <button (click)="getCondidate(condidate.id)">Get Condidate</button>
    </li>
  </ul>
</div>

getCondidate(condidate.id)方法应调用前面的代码。

希望有帮助。