订阅路由更改并进行初始化

时间:2019-09-17 14:48:36

标签: angular

我对角度7有疑问。 我有一个视图,它在init上加载了一些数据。但是此视图必须在路由更改时重新加载数据。 在url中,我有一个ID用于重新加载同一视图,这就是为什么onInit触发器仅触发一次的原因。

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

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

是的,你是对的!为避免代码重复,您可以订阅route参数并再次进行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,因此,只要更改路线,您总是会收到通知。