Angular 4延迟加载,命名路由器出口无法正常工作

Alb*_*rtK 5 lazy-loading angular

我有一个延迟加载问题,而不是路由到指定的路由器插座.有人可以看看我错在哪里吗?我有一个主页,其中有一个链接到产品 - >默认路由器插座和产品详细信息 - >命名路由器插座.

  <div>
   <div><a [routerLink]="['product']"> Product </a> </div>
   <div><a [routerLink]="['productdetail',{outlets:{productdetail: 'detail'}}]"> Product Detail </a> </div>
  <div> <router-outlet></router-outlet></div>
  <div> <router-outlet name="detail"></router-outlet>
</div>
Run Code Online (Sandbox Code Playgroud)

以下是plunker代码.

Plunker代码

moh*_*rim 9

这是已知的错误,您可以在此处跟踪问题

解决方法或者我们可以说这个问题的解决方案是,如果在延迟加载的模块中存在auxilary(即命名)路由,则使用非空路径作为顶级路由.

我能看到的唯一缺陷是,在路线中增加了一个额外的网址段

MainRoutingModule:顶级非空路径(即"路径:'加载'")

import { ModuleWithProviders, NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';

import { MainpageComponent } from './mainpage.component';
import { ProductComponent } from './product.component';
import { ProductDetailComponent } from './productdetail.component';

const childroutes: Routes = [

 { path: 'load', component: MainpageComponent  ,
    children: [ 
      {path: 'product', component: ProductComponent
      {path: 'productdetail', component: ProductDetailComponent,
        outlet: 'detail' 
      },

    ]
 },


];

export const routing: ModuleWithProviders = RouterModule.forChild(childroutes);

const newLocal: NgModule = {
    imports: [RouterModule.forChild(childroutes) ],
    exports: [RouterModule, ],
    declarations: []
};

@NgModule(newLocal)


export class MainRoutingModule { }
Run Code Online (Sandbox Code Playgroud)

MainpageComponent:使用辅助路由的正确语法.

[routerLink] = "[{网点:{细节:[ '产品详情']}}]"

import { Component, OnInit, ViewEncapsulation } from '@angular/core';
import { Router } from '@angular/router';

@Component({
  selector: 'app-main',
  template: `
  <div>

  <div><a [routerLink]="['product']"> Product </a> </div>
  <div><a [routerLink]="[{outlets:{detail:['productdetail']}}]"> Product Detail </a> </div>
  <div> <router-outlet></router-outlet></div>
  <div> <router-outlet name="detail"></router-outlet>

</div>
  `,
  encapsulation: ViewEncapsulation.None,
})

export class MainpageComponent {}
Run Code Online (Sandbox Code Playgroud)

LoginComponent:

使用[routerLink] ="['mainpage/load']"加载主模块.

import { Component, OnInit, OnDestroy } from '@angular/core';

@Component({
  selector: 'app-login',
  template: `This is login page place holder <br> <a [routerLink]="['mainpage/load']">Go to Main Page</a>`,

})

export class LoginComponent implements Oninit, OnDestroy {
constructor() {}

ngOnInit(): void {}

}
Run Code Online (Sandbox Code Playgroud)

演示:https://plnkr.co/edit/0ZpNL3lvbRbexLzQqRZh?p = preview