【问题标题】:Why is my router-outlet not working on a Angular CLI project?为什么我的路由器插座不能用于 Angular CLI 项目?
【发布时间】:2019-10-17 11:56:34
【问题描述】:

第一次使用 Angular CLI,我是新手。

我在使用生成 Angular 项目的基本 CLI 时遇到问题。

基本上<router-outlet></router-outlet> 没有填充任何内容。

以下是我的代码。如果发现并解释了问题,将不胜感激...

+ app
|- app-routing.module.ts
|- app.component.css
|- app.component.html
|- app.component.spec.ts
|- app.component.ts
|- app.module.ts
|-+ homepage
  |- homepage-routing.module.ts
  |- homepage.module.ts
  |-+ home
    |- home.component.css
    |- home.component.html
    |- home.component.spec.ts
    |- home.component.ts

home.component.ts

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

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.css']
})
export class HomeComponent implements OnInit {

  constructor() { }

  ngOnInit() {
  }

}

主页路由.module.ts

import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from './home/home.component';

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

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

homepage.module.ts

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

import { HomepageRoutingModule } from './homepage-routing.module';
import { HomeComponent } from './home/home.component';
// import { FooterComponent } from './footer/footer.component';

@NgModule({
  declarations: [HomeComponent],
  imports: [
    CommonModule,
    HomepageRoutingModule
  ]
})
export class HomepageModule { }

app-routing.module.ts

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

const routes: Routes = [
  {path : 'home', loadChildren : './homepage/homepage.module'},
  {path : '', redirectTo : '/home', pathMatch : 'full'}  
];

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

app.component.ts

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'app';
}

app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';

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

app.component.html

<p>Application loaded</p>
<router-outlet></router-outlet>

home.component.html

<div class="content">
  <h2>
    Home Dashboard
  </h2>
  <section>
    Welcome to the Home component inside the
    Home module.
    Et harum quidem rerum facilis est et expedita distinctio.
    Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil 
    impedit quo minus id quod maxime placeat facere possimus, 
    omnis voluptas assumenda est, omnis dolor repellendus. 
    Temporibus autem quibusdam et aut officiis debitis aut rerum necessitatibus 
    saepe eveniet ut et voluptates repudiandae sint et molestiae non recusandae. 
  </section>
</div>

【问题讨论】:

标签: angular typescript angular-cli angular2-routing


【解决方案1】:

您在这里缺少模块名称:

{path: 'home', loadChildren : './homepage/homepage.module'}

改为:

{path: 'home', loadChildren : './homepage/homepage.module#HomepageModule'}

【讨论】:

    【解决方案2】:

    使用这个语法:

    {
        path : 'home',
        loadChildren : './homepage/homepage.module#HomepageModule',
    },
    

    【讨论】:

      【解决方案3】:

      您应该将 HomepageModule 导入您的 AppModule

      import { HomepageModule } from './homepage/homepage.module';
      
      @NgModule({
      
        imports: [
          BrowserModule,
          AppRoutingModule,
          HomepageModule 
        ],
        ...
      })
      export class AppModule { }
      

      【讨论】:

      • 这会破坏延迟加载,所以不,你不应该这样做。
      • 当然可以,但这取决于他想要什么。无论如何,它解决了问题!
      • 嗯,他正在使用 loadChildren,所以很明显他想要延迟加载;)
      • 哈哈,是的,延迟加载会更好。无论如何,非常感谢
      猜你喜欢
      • 2018-07-28
      • 1970-01-01
      • 2020-05-16
      • 2020-02-12
      • 1970-01-01
      • 2021-03-13
      • 2019-01-05
      • 2016-12-30
      • 2018-09-27
      相关资源
      最近更新 更多