Angular 6 子路由不起作用

标签 angular html typescript angular-routing

我有一个用于 angular 6 app 的简单导航,我试图让路由和子路由在一个简单的配置中工作,但不幸的是我似乎无法让它工作。

这是我的应用程序的结构

└───src
    ├───app
    │   ├───components
    │   │   ├───about
    │   │   ├───clients
    │   │   ├───footer
    │   │   ├───how-it-wo
    │   │   ├───partners
    │   │   ├───projects
    │   │   ├───team
    │   │   ├───whatwedo
    │   │   └───why-choos
    │   ├───layout
    │   │   └───main-layo
    │   └───shared
    ├───assets
    │   ├───charts
    │   ├───css
    │   ├───fonts
    │   ├───icon
    │   └───images
    └───environments

这里是路由,app.routing.module.ts

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule, Routes } from '@angular/router';
import { MainLayoutComponent } from './layout/main-layout/main-layout.component';
import { AboutComponent } from './components/about/about.component';
import { WhatwedoComponent } from './components/whatwedo/whatwedo.component';
import { ProjectsComponent } from './components/projects/projects.component';
import { FooterComponent } from './components/footer/footer.component';
const routes: Routes = [
  {
    path: '',
    redirectTo: 'home',
    pathMatch: 'full'
  },
  {
    path: 'home',
    component: MainLayoutComponent,
    children: [
      {
        path: 'about',
        component: AboutComponent
      },
      {
        path: 'what',
        component: WhatwedoComponent
      },
      {
        path: 'projects',
        component: ProjectsComponent
      },
      {
        path: 'contacts',
        component: FooterComponent
      }
    ]
  }
];


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

这是html

<nav class="main-nav">
    <ul class="main-nav__list " ng-sticky [addClass]="'main-sticky-link'" [ngClass]="ref.click === true? 'Navbar__ToggleShow' :''">
          <li class="main-nav__item" routerLinkActive="active">
            <a class="main-nav__link" routerLink="/">Home</a>
          </li>
          <li class="main-nav__item" routerLinkActive="active">
            <a class="main-nav__link" routerLink="/home/about">About us</a>
          </li>
          <li class="main-nav__item" routerLinkActive="active">
            <a class="main-nav__link" routerLink="/home/what">What we do</a>
          </li>
          <li class="main-nav__item" routerLinkActive="active">
            <a class="main-nav__link" routerLink="/home/projects">Projects</a>
          </li>
          <li class="main-nav__item" routerLinkActive="active">
            <a class="main-nav__link" routerLink="/home/contacts">Contacts</a>
          </li>
        </ul>
</nav>
<div class="majeni-app">
  <app-whatwedo></app-whatwedo>
  <app-about></app-about>
  <app-projects></app-projects>
  <app-why-choose-us></app-why-choose-us>
  <app-team></app-team>
  <app-footer></app-footer>
</div>

更新 这里是 gitbuh 仓库供引用 https://github.com/gruby-murzyn/agency/tree/master/majeni

当我点击关于我们时什么也没发生,但浏览器上的 url 看起来没问题

http://localhost:4200/home/about

我的代码哪里做错了?

最佳答案

当您使用 children 时在你的路由中,父组件需要有 <router-outlet></router-outlet>在它里面是 html,以便将子项加载到该父项中。 Angular Docs on Child Configuration

此外,对于路由组件,无需在父组件的 html 中添加组件选择器,因为它们将由 router-outlet 下面的路由器自动注入(inject)。 .

所以你在你的情况下改变你的 最后显示的 div:

<div class="majeni-app">
 <router-outlet></router-outlet>
<!-- All children will be inserted here -->
  <app-footer></app-footer>
</div>

或者您在 html 中的选择器不是路由组件,应该显示在每个子组件上 然后只需添加 router-outlet到具体位置

<div class="majeni-app">
  <app-whatwedo></app-whatwedo>
  <app-about></app-about>
  <app-projects></app-projects>
  <app-why-choose-us></app-why-choose-us>
  <app-team></app-team>
  <router-outlet></router-outlet>
  <!-- All children will be loaded here -->
  <app-footer></app-footer>
</div>

关于Angular 6 子路由不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52032009/

相关文章:

单击选项卡时出现 Angular 全日历初始化问题

html - 在响应式滚动表中保留标题修复

html - 是什么导致这两个元素显示在单独的行上?

typescript - 使用 webpack、threejs 示例和 typescript?

node.js - *ngIf-else 不显示 else 结果

angular - 测试 Angular 服务是否已经初始化

html - CSS 跳跃焦点

html - 我可以设计这个音频播放器吗?

javascript - angular 9 loadchildren 不加载 css、js、图像文件

javascript - 在 Angular 2 App 中使用 *ngIf 在负面情况下未获得预期结果