角度延迟加载问题

问题描述 投票:0回答:3

我正在尝试实现延迟加载并尝试延迟加载登录组件但是当点击登录链接时我得到异常'无法匹配任何路由'。

//app.component.html
<nav class="navbar navbar-default">
  <div class="container-fluid">
    <div class="navbar-header">
      <a class="navbar-brand" href="#">Register / Login</a>
    </div>
    <ul class="nav navbar-nav">
      <li><a routerLink="signin" routerLinkActive="nav-link active">Sign In</a></li>
      <li><a>Sign Up</a></li>
      <li><a routerLink="help" routerLinkActive="nav-link active">Help</a></li>
    </ul>
  </div>
</nav>
<div>
</div>
<router-outlet></router-outlet>



//app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router'

import { AppComponent } from './app.component';
import { HelpComponent } from './help/help.component';

const route: Routes = [
  {
    path: '', component: HelpComponent
  },
  {
    path: 'lazymodule', loadChildren: './login-register/login-register.module#LoginRegisterModule'
  },
  {
    path: 'help', component: HelpComponent
  }
];

@NgModule({
  declarations: [
    AppComponent,
    HelpComponent
  ],
  imports: [
    BrowserModule,
    RouterModule.forRoot(route)
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }



//login-register.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { SignInComponent } from './sign-in/sign-in.component';
import { FormsModule } from '../../../node_modules/@angular/forms';
import { Routes, RouterModule } from '../../../node_modules/@angular/router';

const route: Routes = [
  {path: 'signin', component: SignInComponent}
]

@NgModule({
  imports: [
    CommonModule,
    FormsModule,
    RouterModule.forChild(route)
  ],
  declarations: [SignInComponent]
})
export class LoginRegisterModule { }

signin组件位于app-> login-register-> sign-in文件夹中。请指教。

angular
3个回答
1
投票

使用胖箭头功能,那么你不必担心模块的路径

EG

{ path: 'lazymodule', loadChildren: () => LoginRegisterModule }

你的routerLink应该是

<li><a routerLink="/lazymodule/signin" routerLinkActive="nav-link active">Sign In</a></li>

0
投票

Ng5-Lazy-loading-bug-cli-1.7.1 bug:

angular-cli1.7.1在字符串中加载延迟加载有问题

{path:'user-panel',loadChildren:'。/ user-panel / user-panel.module #UserPanelModule',}, - >会给出错误一些时间。

到{path:'user-panel',loadChildren :()=> UserPanelModule,},

从routing.ts中的'/ path-of-module'导入{UserPanelModule}使延迟加载到预加载器模块 - >将模块加载为组件级 - 模块作为组件。


-1
投票

你可以这样做

//app.component.html
    <nav class="navbar navbar-default">
      <div class="container-fluid">
        <div class="navbar-header">
          <a class="navbar-brand" href="#">Register / Login</a>
        </div>
        <ul class="nav navbar-nav">
          <li><a routerLink="lazymodule/signin" routerLinkActive="nav-link active">Sign In</a></li>
          <li><a>Sign Up</a></li>
          <li><a routerLink="help" routerLinkActive="nav-link active">Help</a></li>
        </ul>
      </div>
    </nav>
    <div>
    </div>

<router-outlet></router-outlet>

//login-register-module.同时

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { SignInComponent } from './sign-in/sign-in.component';
import {FormsModule} from '@angular/forms';
import {Routes,RouterModule} from '@angular/router';

const route: Routes = [
  {path: 'signin', component: SignInComponent}
]

@NgModule({
  imports: [
    CommonModule,
    FormsModule,
    RouterModule.forChild(route)
  ],
  declarations: [SignInComponent]
})
export class LoginRegisterModule { }

//app.module.同时

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router'

import { AppComponent } from './app.component';
import { HelpComponent } from './help/help.component';
import { LoginRegisterModule } from '../app/login-register/login-register.module';
const route: Routes = [
  {
    path: '', component: HelpComponent
  },
  {
    path: 'lazymodule', loadChildren: () => LoginRegisterModule
  },
  {
    path: 'help', component: HelpComponent
  }
];

@NgModule({
  declarations: [
    AppComponent,
    HelpComponent
  ],
  imports: [
    BrowserModule,
    RouterModule.forRoot(route)
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

live demo

© www.soinside.com 2019 - 2024. All rights reserved.