簡體   English   中英

Angular 不顯示帶有延遲加載的組件

[英]Angular is not displaying the components with lazyload

我正在嘗試使用 Angular 創建一個應用程序,我正在使用延遲加載。 當我嘗試訪問localhost:4200時沒有顯示任何內容。 這是代碼

app.routing.ts

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

const routes: Routes = [
    { path: '', loadChildren: './pages/lander/lander.module#LanderModule' },
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

這是我的 app.module.ts

import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app.routing';
import { FormsModule } from '@angular/forms';
import { HttpClientModule } from '@angular/common/http';
import { RouterModule } from '@angular/router';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { BrowserModule } from '@angular/platform-browser';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    AppRoutingModule,
    FormsModule,
    HttpClientModule,
    RouterModule,
    BrowserModule,
    BrowserAnimationsModule,
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

這是app.component.html

<router-outlet></router-outlet>

如您所見,我正在嘗試調用一個名為lander的模塊,這將是 rest 組件的處理程序。

**This is the lander-routing.module.ts**
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { LanderComponent } from './lander.component';

const routes: Routes = [
  { path: '', component: LanderComponent }
];

@NgModule({
  imports: [RouterModule.forChild(routes)],
  exports: [RouterModule]
})
export class LanderRoutingModule { }

登陸器.module.ts

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';

// Material
import { MatGridListModule } from '@angular/material';
import {MatSidenavModule} from '@angular/material/sidenav';
import {MatMenuModule} from '@angular/material/menu';

import { LanderRoutingModule } from './lander-routing.module';
import { LanderComponent } from './lander.component';
import { RouterModule } from '@angular/router';



@NgModule({
  declarations: [LanderComponent],
  imports: [
    CommonModule,
    RouterModule,
    LanderRoutingModule,
    MatGridListModule,
    MatSidenavModule,
    MatMenuModule,
  ]
})
export class LanderModule { }

最后是lander.component.html

<div class="container-fluid h-100 px-0">
  <mat-drawer-container class="drawer" [hasBackdrop]="true">
    <mat-drawer class="menubar" #drawer mode="over">
      <img class="avatar" src="https://www.teslarati.com/wp-content/uploads/2019/04/elon-musk-smiling-1.jpg">
      <h4 class="text-center mt-2">
        ELON MUSK<br>
        <small class="text-secondary">
          Chairman
        </small>
      </h4>
      <ul class="list-group mt-4">
        <li class="list-group-item active" routerLinkActive="active">
          <a [routerLink]="[ '/' ]">Dashboard</a>

        </li>
        <li class="list-group-item">Second item</li>
        <li class="list-group-item">Third item</li>
      </ul>
    </mat-drawer>

    <mat-drawer-content>
      <button mat-raised-button (click)="drawer.toggle()">Toggle drawer</button>
      <router-outlet></router-outlet>
    </mat-drawer-content>
  </mat-drawer-container>
</div>

結構有什么問題?

好吧,我看到的第一個錯誤是模塊中導入的順序。 Angular 模塊應該是第一個(CommonModule、BrowserModule、FormsModule)。 然后如果你有使用“moduleB”的“moduleA”,那么應該導入順序:[moduleB,moduleA]。

其次,您在每個模塊中導入了兩次路由器模塊。 您已經使用 AppRoutingModule 導入 RouterModule,因此您不必在 AppModule 中導入。 此外,您在 LanderModule 中犯了同樣的錯誤。

在這里你有更正:

app.routing.ts沒關系。

** app.module.ts**

import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { AppRoutingModule } from './app.routing';
import { FormsModule } from '@angular/forms';
import { HttpClientModule } from '@angular/common/http';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { BrowserModule } from '@angular/platform-browser';

@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
    CommonModule,
    BrowserModule,
    BrowserAnimationsModule,
    FormsModule,
    HttpClientModule,
    AppRoutingModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

LanderRoutingModule 沒問題

登陸器.module.ts

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';

// Material
import { MatGridListModule } from '@angular/material';
import {MatSidenavModule} from '@angular/material/sidenav';
import {MatMenuModule} from '@angular/material/menu';

import { LanderRoutingModule } from './lander-routing.module';
import { LanderComponent } from './lander.component';
import { RouterModule } from '@angular/router';



@NgModule({
  declarations: [LanderComponent],
  imports: [
    CommonModule,
    MatGridListModule,
    MatSidenavModule,
    MatMenuModule,
    LanderRoutingModule
  ]
})
export class LanderModule { }

如果運行良好,請立即嘗試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM