检测从命名路由器出口中的组件返回的导航

Detect navigation back from component in named router outlet

我在路由器插座中显示一个 A 组件,在这个里面我有另一个 B 组件,它有一个命名的路由器插座,我在其中显示另一个 C 组件

Router-outlet
A Component
    B Component
    Named Router-outlet
        C Component

在这个 C 组件 中,我执行了验证,在此之后,我想返回到 A 组件 重新加载它(执行 ngOnInit 或任何方法)。

我尝试过使用不同的方法,例如导航、navigateByUrl 和 Location.back()。问题是 A Component 从未被销毁,因此它从未执行过 ngOnInit 方法。

有人知道我该如何解决这个问题吗?谢谢!

我不太确定您将如何能够再次执行 ngOnInit,但解决方法可能是订阅路由器事件(如 所述)并在其中执行您想要的代码.

您可以创建一个服务来处理这种特定情况

   export class RefreshService{   
       private refreshMessage = new BehaviorSubject<any>(null);        
       refreshObservable = this.refreshMessage.asObservable();

       sendRefreshMessage() {
         this.refreshMessage.next("");
       }
    }

在组件 A 中,我订阅了我的 observable

export class AComponent implements OnInit {

  constructor(private refreshService: RefreshService) { }

  ngOnInit() {
   this.refreshService.subscribe(res => { do stuff here } );
  }

}

在执行验证后的组件 C 中:

this.refreshService.sendRefreshMessage();

这将触发您在组件 A 中的订阅,然后将执行订阅中的所有代码