首页 > 解决方案 > 订阅路由更改和初始化

问题描述

我有一个关于角度 7 的问题。我有一个在 init 上加载一些数据的视图。但是这个视图必须重新加载有关路线变化的数据。在网址中,我有一个用于重新加载相同视图的 Id,这就是 onInit 仅触发一次的原因。

基本上我所做的是在 OnInit 上调用后端,然后订阅路由更改并将调用复制到后端。

在这种情况下,最佳做法是什么?我不认为重复的代码是解决方案......

我无法发布我的代码,因为我有很多后端调用并且代码会很长。

谢谢!

标签: angular

解决方案


是的,没错!为避免重复代码,您可以订阅路由的参数并再次进行 API 调用:

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

constructor(private route: ActivatedRoute) {
  this.route.paramMap.subscribe( params => {
    this.id = params.get('id');
    this.makeYourAPICalls(this.id);
  });
}

就像route那种类型的Observable那样,每当您的路线发生变化时,您都会收到通知。


推荐阅读