angular - 订阅路由更改和初始化
问题描述
我有一个关于角度 7 的问题。我有一个在 init 上加载一些数据的视图。但是这个视图必须重新加载有关路线变化的数据。在网址中,我有一个用于重新加载相同视图的 Id,这就是 onInit 仅触发一次的原因。
基本上我所做的是在 OnInit 上调用后端,然后订阅路由更改并将调用复制到后端。
在这种情况下,最佳做法是什么?我不认为重复的代码是解决方案......
我无法发布我的代码,因为我有很多后端调用并且代码会很长。
谢谢!
解决方案
是的,没错!为避免重复代码,您可以订阅路由的参数并再次进行 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
那样,每当您的路线发生变化时,您都会收到通知。
推荐阅读
- sql - 索引是否会影响 where is not null 查询的性能?
- react-native - undefined 不是对象(评估 '_expo.default.Localization.locale')
- python - IBM 语音转文本用户名和密码问题
- javascript - XMLHttpRequest:如何导航“链接”标头
- spring - 使用 Spring 配置从 Spring 连接到 WebSphere MQ
- python - 无法解决 LinAlgError:数组的最后 2 个维度必须是正方形
- c# - 多个级别的等效名称
- arrays - 文件的读写
- python - 为什么集合似乎表现不同?
- neo4j - Neo4j Cypher - 将日期时间更改为纪元时间戳