Angular 2在同一组件内导航

时间:2017-10-06 17:57:37

标签: angular angular2-routing

在" ProfileComponent"显示当前配置文件,有一个其他配置文件的列表,所以当我尝试通过...导航到其他配置文件时

this.router.navigate(['/profile/' + profileID]);

它会更改来自http://localhost:4200/profile/fsfterthjkj5

的网址中的参数

http://localhost:4200/profile/hj45k35v

但该组件保持显示相同的配置文件。 我可以通过简单地将新配置文件分配给旧配置文件来重新渲染组件,并且角度更新页面上的所有数据但是...我该如何做到这一点我可以通过单击"回到旧配置文件。背面"浏览器中的按钮。

我尝试在更改参数后重新加载页面 - 这种方式角度也会渲染我需要的配置文件但仍然无法返回,params只是更改URL并且对页面没有影响,这没有任何意义在已经加载的情况下重新加载后请求相同的数据。

2 个答案:

答案 0 :(得分:5)

如果要导航到具有不同参数的同一组件,则需要订阅路径参数的Observable。

导入:

import { ActivatedRoute } from '@angular/router';

构造函数:

constructor(private route: ActivatedRoute) { }

OnInit生命周期钩子:

ngOnInit(): void {
    this.route.params.subscribe(
        params => {
            const id = +params['id'];
            this.getMovie(id);
        }
    );
}

每次路由参数更改而不更改组件时,subscribe方法中的代码都将执行。

在这个例子中,我从参数中提取id并使用它来获取具有已定义id的影片。

这样的事情应该适用于你的场景。

答案 1 :(得分:0)

好的,我猜... 刚刚实现了这个var getGlobal = function () { // the only reliable means to get the global object is // `Function('return this')()` // However, this causes CSP violations in Chrome apps. if (typeof self !== 'undefined') { return self; } if (typeof window !== 'undefined') { return window; } if (typeof global !== 'undefined') { return global; } throw new Error('unable to locate global object'); };

[href]="testFunc(profile.userId)"