我已经升级到使用新的Angular 2路由,路由已弃用,一些行为已经改变.

我遇到问题的页面是搜索页.我们 Select 将所有搜索词放入使用HashLocationStrategy的URL中.路由如下所示:

const routes: RouterConfig = [
  { path: '', component: HomeComponent },
  { path: 'search/:term/:cat/:page/:sort/:size/:more', component: HomeComponent },
  { path: 'search/:term/:cat/:page/:sort/:size', component: HomeComponent },
  { path: 'search/:term/:cat/:page/:sort', component: HomeComponent },
  { path: 'search/:term/:cat/:page', component: HomeComponent },
  { path: 'search/:term/:cat', component: HomeComponent },
  { path: 'search/:term', component: HomeComponent },
  { path: 'details/:accountNumber', component: DetailsComponent }
];

我知道查询字符串方法可能更适合所有这些选项,但项目需求由其他人决定...

无论如何,如果我使用this.router.navigate(['/search/Hello']);导航到localhost/#/search/Hello,那么路由工作正常,一切都很好.而在该页面上,如果我try 使用this.router.navigate(['/search/World']);,那么浏览器地址栏中的URL将相应地更新,但组件根本不会更改.

之前,我可以使用routerCanReuse来表示我确实希望重用搜索组件,而routerOnReuse将在导航发生时重新运行搜索.我看不到与@angular/router中的这些相同.如何使用新的URL参数重新加载当前路由?

我运行的是2.0.0-rc版本.3表示Angular 2和3.0.0-alpha.8个Angular /路由.

推荐答案

如果只有参数发生了更改,组件本身将不会再次初始化.但您可以订阅发送的参数的更改.

例如,在ngOnInit方法中,您可以执行以下操作:

ngOnInit() {
    this.sub = this.route.params.subscribe(params => {
       const term = params['term'];
       this.service.get(term).then(result => { console.log(result); });
     });
  }

Angular相关问答推荐

间歇性不正确的SSR重定向(server. ts级别的请求和响应不匹配)

尾风手风琴中的Ngor

对子router-outlet 应用主机样式

判断哪个Angular 信号导致了影响

当可观察到的更改时,异步管道不更新视图

如何在Angular功能路由保护中取消订阅RxJs主题

如何以Angular 解析表单控件名称的无值访问器?

对REST后端的Angular/Priming过滤器请求导致无限循环

显示用户名-Angular

Angular 信号 在 effect() 中使用 debounce

需要做什么才能使 ErrorHandler 正常工作?

尽管模型中的变量发生了变化,但Angular 视图没有更新

类继承支持

如何在 Angular 2 模板中使用枚举

Angular 2.0 中 $scope 的替代品

请添加@Pipe/@Directive/@Component 注解

ViewChild 和 ContentChild 的所有有效 Select 器是什么?

使用 formControlName 和 ngModel 的Angular 6 警告

NgrxStore 和 Angular - 大量使用异步管道或在构造函数中只订阅一次

NPM 脚本 start退出,但未指示 Angular CLI 正在侦听请求