【问题标题】:Two Angular router-oulets in bootstrap modal引导模式中的两个 Angular 路由器出口
【发布时间】:2020-05-20 08:34:08
【问题描述】:

我在我的 Angular 应用程序中添加了其他模式,两者都有不同的

<router-outlet></router-outlet>

前一个工作正常,但在添加具有不同路线的第二个模式后,第一个停止工作。我尝试在路由器插座上使用不同的name 属性,但似乎没有任何效果。 如果我注释掉另一个,一次只有一个在工作。

<button type="button" data-target="#settings2" data-toggle="modal" routerLink="setup_season">                         
   Season
</button>

<button type="button" data-target="#settings" data-toggle="modal" routerLink="setup_package">                         
  Package
</button>

第一个模态

 <div id="settings" class="modal fade" role="dialog">
      <div class="modal-dialog">

         <!-- Modal -->
      <div class="modal fade" id="myModal" role="dialog">
        <div class="modal-dialog">

          <!-- Modal content-->
          <div class="modal-content">
            <div class="modal-header">
              <button type="button" class="close" data-dismiss="modal">&times;</button>
              <h4 class="modal-title">Modal Header</h4>
            </div>
            <div class="modal-body">
                <router-outlet></router-outlet> // already tried with name attribute
            </div>
            <div class="modal-footer">
              <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            </div>
          </div>

        </div>
      </div>

第二模态

<div id="settings2" class="modal fade" role="dialog">
  <div class="modal-dialog">

     <!-- Modal -->
  <div class="modal fade" id="myModal" role="dialog">
    <div class="modal-dialog">

      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title">Modal Header</h4>
        </div>
        <div class="modal-body">
            <router-outlet></router-outlet> // already tried with name attribute
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>

    </div>
  </div>

【问题讨论】:

  • 你们能提供 stakblitz 复制吗?
  • 我尝试制作 stackbkitz,但引导模式无法在其中工作。所以我离开了。

标签: javascript angular bootstrap-modal angular-router angular-routerlink


【解决方案1】:

你需要使用辅助路由,我会贴一个我自己代码的类似案例,你的代码也一样:

  <div class="side-panel">
      <!-- the auxiliary outlet -->
      <router-outlet name="sidePanel"></router-outlet>
  </div>

  <div class="main-content m-0 p-0">
      <!-- the primary outlet -->
      <router-outlet></router-outlet>
 </div>

路由配置应该和这个类似:

const routes: Routes = [
  {
    path: '',
    redirectTo: '/app/auth/login',
    pathMatch: 'full'
  },
  {
    path: 'app',
    children: [
       {
         path: 'main',
         component: MainComponent
       }, 
       {
         path: 'side-menu',
         component: SlidePanelComponent,
         outlet: 'sidePanel',  // You need to mention the name of the auxiliary route
       }
     ]
]

最后,你需要在 routerLink 中提及出口的名称,就像这样:

  <a [routerLink]="[{ outlets: { sidePanel: 'side-menu'}}]">

【讨论】:

  • 我在两个路由器插座上都有 5 个以上的路由。将工作?因为我试过了,但它们没有用。
  • [routerLink]="[{ outlets: { sidePanel: 'side-menu'}}]" 这个属性对我有用。我在做auxiliary routes,但在我的&lt;a&gt; 标签上缺少这个属性来路由。谢谢它的工作。
  • @NajamUsSaqib 很高兴我能帮上忙!
猜你喜欢
  • 2023-03-12
  • 1970-01-01
  • 2018-06-28
  • 2016-07-27
  • 2017-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-23
相关资源
最近更新 更多