【问题标题】:obtain the current outlet name in case of a multiple named router outlet在多个命名的路由器出口的情况下获取当前出口名称
【发布时间】:2017-12-22 05:38:45
【问题描述】:

在我们的 Angular 4 应用程序中,我们有多个命名的路由器出口。 所以网址是这样的: http://localhost:3000/main/(outletName1:Printers//outletName2:Printers)

假设一个组件显示在一个特定命名的路由器出口中。 组件在构造函数中注入了Router、ActivatedRoute等。

组件如何从那些注入的对象(或其他可能的对象)中检索路由器出口的名称?

【问题讨论】:

    标签: angular router named router-outlet


    【解决方案1】:

    我认为您可以通过 RoutesRecognized 事件获取所有命名的网点。下面是一个示例代码。

    this.router.events.filter((event) => event instanceof RoutesRecognized).subscribe((result) =>  {
      console.log(result);
      const routesRecognizedEvent =  <RoutesRecognized>result;
      const state = routesRecognizedEvent.state;
    
      if( state && state.root ) {
        const root = state.root;
    
        const children = root.children;
    
        const allOutlets =  children.map(c => c.outlet);
    
        // allOutlets contains outletnames of current activated route
    
    
    
      }
    });
    

    【讨论】:

    • 嗯,不是我所期望的,但很有用。谢谢 !但是:组件仍然无法知道它显示在哪个出口名称中(如果同一路线上存在多个出口名称)。可以从router config中看到这条路由的所有outlet,但是不能直接看出哪个是他自己的outlet名字。
    • @Dacian 找到对应网点名称的解决方法了吗?
    猜你喜欢
    • 2016-10-28
    • 1970-01-01
    • 2018-02-02
    • 1970-01-01
    • 2018-07-27
    • 2023-04-08
    • 1970-01-01
    • 2019-05-17
    • 1970-01-01
    相关资源
    最近更新 更多