更改路由参数,而无需在 Angular 2 中重新加载

我正在使用Angular 2,Google Maps等制作一个房地产网站,当用户更改地图的中心时,我会对API进行搜索,指示地图的当前位置以及半径。问题是,我想在不重新加载整个页面的情况下在URL中反映这些值。这可能吗?我发现了一些使用AngularJS 1.x的解决方案,但没有关于Angular 2的解决方案。


答案 1

从RC6开始,您可以执行以下操作来更改URL而不更改状态,从而保留您的路由历史记录

    import {OnInit} from '@angular/core';

    import {Location} from '@angular/common'; 
    // If you dont import this angular will import the wrong "Location"

    @Component({
        selector: 'example-component',
        templateUrl: 'xxx.html'
    })
    export class ExampleComponent implements OnInit {
        
        constructor( private location: Location )
        {}

        ngOnInit() {    
            this.location.replaceState("/some/newstate/");
        }
    }

答案 2

您可以使用基本上更改您的URL,而不会更改应用程序路由。location.go(url)

注意:这可能会导致其他影响,如从当前路由重定向到子路由。

相关问题,其中描述了不会发生任何变化的亲密关系。location.goRouter