Angular 角度导航到同一组件多次
我试图通过导航栏上的[routerlink]导航到同一条路线。 因为在angular中,重定向到同一个组件以调用ngOnint是不可能的,所以我遇到了这个问题 导航栏导航Angular 角度导航到同一组件多次,angular,typescript,rxjs,angular-resolver,Angular,Typescript,Rxjs,Angular Resolver,我试图通过导航栏上的[routerlink]导航到同一条路线。 因为在angular中,重定向到同一个组件以调用ngOnint是不可能的,所以我遇到了这个问题 导航栏导航 [routerLink]="['/customer/events']" 构造函数中的代码 constructor( private navbarService: ServicesInterCustomerNavbarService, private router: Router, priva
[routerLink]="['/customer/events']"
构造函数中的代码
constructor(
private navbarService: ServicesInterCustomerNavbarService,
private router: Router,
private route: ActivatedRoute
) {
this.route.params.subscribe(params => {
this.selectedEventId = params["id"];
this.getfunction();
});
}
我的心是这样的
ngOnInit() {
this.ongoing = [];
this.navbarService.sendCurrentRoute("home");
this.route.firstChild && this.route.firstChild.params.subscribe(params => {
this.selectedEventId = params["id"];
this.getfunction();
});
}
getfunction() {
this.ongoing = [];
this.eventService.getOnging().subscribe(data => {
this.ongoingEvents = data["data"].map(event => new CustomerEvent(event));
if (!this.selectedEventId && this.selectedEventId != 'completed' && this.ongoingEvents.length >0) {
this.redirectToEvent(this.ongoingEvents[0]._id);
}
if(this.ongoingEvents.length <1){
this.redirectToEvent('-1');
}
this.dataLoaded = true;
});
}
eventCreated(event_id: string) {
this.router.navigate(["/customer/events/ongoing", event_id]);
this.newEventWindow = false;
}
redirectToEvent(event_id: string) {
this.router.navigate(["/customer/events/ongoing", event_id]);
}
ngOnInit(){
此参数为[];
此.navbarService.sendCurrentRoute(“主”);
this.route.firstChild&&this.route.firstChild.params.subscribe(params=>{
this.selectedEventId=params[“id”];
这个函数是.getfunction();
});
}
getfunction(){
此参数为[];
this.eventService.getOnging().subscribe(数据=>{
this.ongoingEvents=data[“data”].map(event=>newcustomerevent(event));
如果(!this.selectedEventId&&this.selectedEventId!=“已完成”&&this.ongoingEvents.length>0){
this.redirectToEvent(this.ongoingEvents[0]。\u id);
}
如果(this.ongoingEvents.length,您应该只做一个函数重定向,启用shouldruessetartergy
reInitComponent(){
this.router.routeReuseStrategy.shouldReuseRoute = () => false;
this.router.navigate(["/customer/events/ongoing", event_id]);
}
每当您想重新加载并调用所有角度生命周期挂钩时,请调用此reInitComponent(),我们可以添加一个动态更改的查询参数
this.router.navigate(['/routedComponent'], {
queryParams: {refresh: new Date().getTime()}
});
因此,我们可以检查查询参数是否在构造函数中更改,并传递需要执行的函数
使用这种方法,可以修复路由到具有不同参数的同一组件的问题,谢谢!但是我使用了这种方法。但是当事件id=-1时,组件将在一个永无止境的循环中重新启动。知道吗?只需检查ngOnInit方法参数id如果是-1,则不调用重载函数,否则调用e reload function是true,但根据我的代码,我没有通过[routerlink]传递任何参数,因此不会有任何参数。因为我在构造函数中使用了重用策略。只需在routerlink代码中传递一个可选或必需的参数,如下所示:/idThank!我使用以下方法解决了这个问题。