从表单控件写入浏览器 URL [重复]

Posted

技术标签:

【中文标题】从表单控件写入浏览器 URL [重复]【英文标题】:Write to the browser URL from a form control [duplicate] 【发布时间】:2019-02-28 03:52:18 【问题描述】:

我有一个角表,在标题上方有许多搜索框。当用户在搜索框中键入时,相关列被过滤。

我想将搜索框中的值直接写入 URL,以便用户键入和更改搜索条件时,URL 中的参数会自动更新。如果用户收藏或共享 URL,或者在历史记录中从该 URL 导航到该 URL,则使用先前的搜索参数。

我查看了router docs,但我看到写入 URL 的唯一方法是导航到它。我不希望路由、守卫和导航事件只是在搜索表单和 URL 参数之间触发更直接的绑定。

我正在使用 Angular 6.1.3。我可以在角度范围内执行此操作,还是需要去幕后尝试绕过它?

如果我正在导航,我认为使用 RouteReuseStrategy 会节省一些渲染时间,但我不确定这是否足够。

【问题讨论】:

【参考方案1】:

您正在寻找Location#replaceState(强调我的):

将浏览器 URL 更改为给定 URL 的规范化版本,并替换平台历史堆栈上的顶部项目。

只要有变化就调用这个函数:

ngOnInit () 
  this.form.get('field').changes.subscribe(value => 
    this.location.replaceState('search/' + value)
  )

【讨论】:

以上是关于从表单控件写入浏览器 URL [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使原始的Angular表单控件变脏[重复]

表单控件和表单属性

Windows文件浏览器控件

CSS3美化表单控件

流程中心使用详情表单控件

HTML5自学笔记[ 2 ]新增表单控件和表单属性