Angular2路由器 - 导航到具有不同参数的当前页面

时间:2016-09-21 09:49:22

标签: angular angular2-routing

我试图用不同的参数路由到当前页面但没有用。 我有一个触发的组合框:

bundle install

网址正在发生变化但是关于它。

如何使用不同的参数路由到同一页面?

4 个答案:

答案 0 :(得分:23)

该页面不会刷新,导致Router的工作原理..没有刷新页面!

您必须订阅路由参数以检测其中的更改,然后对该信息执行任何操作。

因此,将ActivatedRoute注入您的组件并订阅如下参数:

constructor(private route: ActivatedRoute) {}

ngOnInit() {
  this.route.params.subscribe(params => {
     // PARAMS CHANGED .. TO SOMETHING REALLY COOL HERE ..

     // for example extract the id..
     let id = +params['id']; // (+) converts string 'id' to a number

   });
}

答案 1 :(得分:5)

你可以使用这个

来做到这一点
std::vector<float> sobelCopy (sobel);
cv::Mat sobel_mat_copy(height, 
                       width, 
                       CV_32F, 
                       sobelCopy.data());

cv::Mat sobel_mat(height, 
                  width, 
                  CV_32F, 
                  sobel.data());

cv::GaussianBlur(sobel_mat_copy, sobel_mat, cv::Size(3,3), 0.0, 0.0, cv::BORDER_CONSTANT);

通过这样做,您的参数已成功更改。

但是如果你真的想要加载某些方法,那么它只会改变你的URL,然后你必须手动调用它们

答案 2 :(得分:4)

好的,特别是在阅读了所有你的答案@ mxii之后(谢谢你),我明白了:

  1. 当使用不同的param路由到同一页面时,只有param会发生变化。 DOM停止运行,没有组件重建,没有onInit循环。
  2. OnChanges钩子触发每次数据绑定更改,这意味着如果我将param传递给子组件我不能在这个参数上使用OnInit,我必须使用OnChanges钩子。
  3. 好教训,谢谢!

答案 3 :(得分:0)

我找到的最简单的方法是订阅路由器,然后重新加载页面:

this.router.navigate(['page', selectedId]).then(page => { window.location.reload(); });