请在此代码中解释,
当我调用另一个方法时,如何再次调用ngOnInit()
ngOnInit(): void {
this.route.params.subscribe((params: Params) => {
this.model=this.userData;
});
}
update() {
this.loading = true;
this.userService.update(this.model)
.subscribe(
data => {
alert ('Update successful');
},
error => {
alert ('Not updated');
this.loading = false;
});
this.user_data();
}
答案 0 :(得分:18)
从我的观点来看,有两种选择:
从另一个功能范围调用ngOnInit()。但我建议不要在
ngOnInit
is an angular core method that belongs to OnInit Interface下采用这种方法。
public ngOnInit() {
this.route.params.subscribe((params: Params) => {
this.model=this.userData;
});
}
update() {
this.ngOnInit();
}
将您的功能分解为另一个功能,使用
ngOnInit
来调用它,之后,可以通过以下方式调用该函数从任何地方发出任何请求:this.<MethodName>();
。
public ngOnInit() {
this.getRouteData();
}
update() {
this.getRouteData();
}
getRouteData() {
this.route.params.subscribe((params: Params) => {
this.model=this.userData;
});
}
答案 1 :(得分:3)
这只是一个功能......
ngOnInit() {}
secondMethod() { this.ngOnInit(); }
我一直在这样做来重新加载我的数据,从来没有遇到过问题。
答案 2 :(得分:2)
您不需要再次调用ngOnInit。所以问题仍然存在,你到底想要完成什么?您是否在检索路由参数时遇到问题?
ngOnInit(): void {
this.route.params.subscribe((params: Params) => {
this.model=this.userData;
});
每次路由参数更改时,您在上述订阅中的代码都会重新执行 AUTOMATICALLY 。因此无需再次手动调用ngOnInit。
答案 3 :(得分:1)
ngOnInit
。所以你可以创建一个函数并再次调用该函数。这是示例代码。
ngOnInit(): void {
this.callFun();
}
update() {
this.callFun();
// do code
}
private callFun(){
// do code
}
答案 4 :(得分:1)
如果目的是在更新查询参数时触发ngOnInit()
,请执行以下操作:
import { Router } from '@angular/router';
constructor(private router: Router) {
this.router.routeReuseStrategy.shouldReuseRoute = () => false;
}