路由器链接不适用于共享模块内的组件

2024-01-08

我编写了一个名为“Customer”的模块,其中包含登录、主页和注册等多个组件。现在我创建了一个共享模块,它也有 2 个组件,例如页眉和页脚。由于页眉和页脚将由客户模块中的所有组件共享,因此我将它们放置在共享模块中。将共享模块导入到客户模块中。

现在有一个路由器链接指向客户模块内的组件。这些路由器链接不会被解释为 href。但是,如果我将这些页眉和页脚组件直接放置在客户模块内,那么这些路由器链接就会被解释。

我已经包含了下面的代码片段。

共享模块文件

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

import { HeaderComponent } from './header/header.component';
import { FooterComponent } from './footer/footer.component';

@NgModule({
  imports: [ ],
  declarations: [ HeaderComponent, FooterComponent ],
  exports: [ HeaderComponent, FooterComponent ]
})

export class SharedModule { }

客户模块文件

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

import { SharedModule } from './shared/shared.module';
import { CustomerRoutingModule } from './customer-routing.module';

import { CustomerComponent } from './customer.component';
import { CustomerHomeComponent } from './home/home.component';
import { CustomerLoginComponent } from './login/login.component';
import { CustomerRegisterComponent } from './register/register.component';

@NgModule({
  imports: [ SharedModule, CustomerRoutingModule ],
  declarations: [ CustomerComponent, CustomerHomeComponent, CustomerLoginComponent, CustomerRegisterComponent ]
})

export class CustomerModule { }

标头组件 html

<div class="header-wrapper">
    <nav class="navbar navbar-light bg-faded">
        <button class="navbar-toggler hidden-lg-up" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation"></button>
        <div class="collapse navbar-toggleable-md" id="navbarResponsive">
            <a class="navbar-brand header-logo" routerLink="./">Your space your time</a>
            <ul class="nav navbar-nav header-menu float-lg-right">
                <li class="nav-item header-menu-item">
                    <a class="nav-link header-menu-link" href="#">About</a>
                </li>
                <li class="nav-item header-menu-item">
                    <a class="nav-link header-menu-link" href="#">Services</a>
                </li>
                <li class="nav-item header-menu-item">
                    <a class="nav-link header-menu-link" routerLink="./signin" routerLinkActive="active">Login <span class="sr-only">(current)</span></a>
                </li>
                <li class="nav-item header-menu-item">
                    <a class="nav-link header-menu-link" routerLink="./signup" routerLinkActive="active">Register</a>
                </li>
            </ul>
        </div>
    </nav>
</div>

客户路由模块

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

import { CustomerComponent } from './customer.component';
import { CustomerHomeComponent } from './home/home.component';
import { CustomerLoginComponent } from './login/login.component';
import { CustomerRegisterComponent } from './register/register.component';

const customerRoutes: Routes = [
  { path: '', redirectTo: 'customer', pathMatch: 'full' },
  { path: 'customer', component: CustomerComponent,
    children: [
      { path: '', redirectTo: 'home', pathMatch: 'full' },
      { path: 'home', component: CustomerHomeComponent },
      { path: 'signin', component: CustomerLoginComponent },
      { path: 'signup', component: CustomerRegisterComponent }
    ]
  }
];

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

如果我理解正确,那么你的错误是,你没有在 SharedModule 中导入 RouterModule 。因此,只需导入 RouterModule 即可获取指令“routerLink”,然后它应该可以工作:

@NgModule({
  imports: [RouterModule ],
  declarations: [ HeaderComponent, FooterComponent ],
  exports: [ HeaderComponent, FooterComponent ]
})

另一个建议:我认为您不理解 SharedModule / CoreModule 的模式。您的页眉和页脚组件是应用程序的核心组件,您将在应用程序中仅使用它们一次(我相信)。因此它们属于 CoreModule。 SharedModule 用于组件,可在多个组件中使用,例如社交媒体链接。您可以在不同的组件中使用它。

但请阅读 Angular 样式指南以获取更多信息:https://angular.io/styleguide#!#04-10 https://angular.io/styleguide#!#04-10

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

路由器链接不适用于共享模块内的组件 的相关文章

随机推荐

  • Typescript Node.js 最简单的设置不起作用 - 错误 TS2307:找不到模块“fs”

    我已经全局安装了 TS 和节点类型 PS C Projects Test gt npm list global depth 0 C Users Jan AppData Roaming npm types email protected cd
  • 我知道react-native的TextInput有一个onsubmit回调函数,但是我实际上如何制作那个提交按钮?

    我想知道如何呈现此按钮 如果是的话 它是否会自动绑定到输入字段中的文本 基本上onSumbitEditing当从 Android 软键盘上单击 go 按钮时 将触发并提供事件 如下例所示
  • 承诺:转到下一个错误函数[重复]

    这个问题在这里已经有答案了 如何使用 Promise 链调用下一个错误函数 我认为错误函数内的返回会自动调用下一个错误函数 Called in a controller dataService saveRequest then functi
  • 如何在VSCODE中设置tasks.json文件来编译Fortran程序?

    我想设置 VScode 操作系统 Windows 10 来创建并编译用 Fortran 90 95 编写的程序 我可以通过在终端中输入以下内容来完成此操作 gfortran o Example exe Example f90进而 Examp
  • 捕获 python 程序的标准输出

    我正在尝试编写一个 C 程序来捕获 python 程序中的标准输出 我的问题是所有输出都是在程序执行之后而不是实际发生时出现的 举个例子 对于这个 python 程序 print Hello time sleep 2 print Hello
  • 在 net core 控制台应用程序中使用 Web 服务器进行简单路由

    我在使用 kestrel 进行路由时遇到问题 我找不到任何关于如何在 netcore 控制台应用程序内部实现此功能的好的教程 我想构建一个简单的 Web 服务器 它有 2 3 个可以访问的端点 public class WebServer
  • 由于非 Ascii 字符,顶点着色器无法编译?

    因此 我开始使用 OpenGL 与 glew 和 GLFW 来创建游戏引擎 在开始使用着色器时我几乎立即遇到了问题 它们没有被使用或者即使被使用也没有任何效果 我一直在用大量其他示例检查我的代码 它们都匹配 没有任何看起来不合适的地方 我开
  • 访问控制允许来源语法

    我希望允许所有的跨源资源共享from example com 的子域 因此 我将如下所示的跨源资源共享标头添加到了页面中subdomain1 to example com
  • 如何将全部破坏限制为仅长单词?

    我正在尝试全部打破很长的单词 还有一些很长的uuid col在基于引导程序的模板中 但是当我对所有列使用以下样式时 它会破坏所有内容 在示例中检查不良破坏 即使单词正常换行的地方工作得很好 在示例中检查预期破坏 有没有办法我可以尽可能使用正
  • Webpack 无法加载字体(ttf)

    目前我有 3 种字体想要添加到我的 React 项目中 一个 一个光 一个大胆 我的文件结构 src fonts A ttf A light ttf A bold ttf styles base base scss styles scss
  • 限制对 C++ 中特定类的方法访问

    我有两个密切相关的类 我将其称为 Widget 和 Sprocket Sprocket 有一组方法 我希望可以从 Widget 调用它们 但不能从任何其他类调用它们 我也不想仅仅将 Widget 声明为 Spocket 的友元 因为这将使
  • 如何访问 OpenCV Matcher 上的点位置?

    我正在使用这个 FLANN 匹配器算法来匹配 2 张图片中的兴趣点 代码如下所示 有时代码会找到匹配点的列表 std vector
  • 向 Python 添加宏

    我想调用以下代码in situ无论我提到什么MY MACRO在我下面的代码中 MY MACRO frameinfo getframeinfo currentframe msg We are on file frameinfo filenam
  • 归并排序,递归部分

    研究了几天合并排序后 我从概念上理解了它 但有一点我不明白 我得到什么 1 它需要一个列表 例如一个数字数组 将其分成两半并对两半进行排序 最后将它们合并在一起 2 因为它是一种递归算法 所以它使用递归来做到这一点 因此 上述数组的分割如下
  • 自动代码签名 - 保护私钥

    我想要自动执行一些 ClickOnce 部署工件 应用程序 exe 和清单 的代码签名 我在用signtool http msdn microsoft com en us library windows desktop aa387764 2
  • Java 中前导零如何改变数字文字?

    我和我的朋友在看到它和答案后对Java中的这个说法感到困惑 这是如何运作的 System out printf d 077 等于63 077 is an octal number http en wikipedia org wiki Oct
  • 无法在舞台内跳过舞台

    我有一个阶段在一个阶段内 我想根据条件跳过它when pipeline agent any stages stage Dynamic stages steps script serverAStatus false def tests CLI
  • 如何判断一个对象的类?

    如果上课B和班级C扩展类A我有一个类型的对象B or C 我如何确定它是哪种类型的实例 if obj instanceof C your code
  • 我们是否可以在可能的情况下使用返回值优化,而在没有的情况下使用移动语义,而不是复制语义?

    是否可以编写 C 代码 在可能的情况下依赖返回值优化 RVO 而在不依赖返回值优化的情况下依赖移动语义 例如 以下代码由于条件原因无法使用 RVO 因此它将结果复制回来 include
  • 路由器链接不适用于共享模块内的组件

    我编写了一个名为 Customer 的模块 其中包含登录 主页和注册等多个组件 现在我创建了一个共享模块 它也有 2 个组件 例如页眉和页脚 由于页眉和页脚将由客户模块中的所有组件共享 因此我将它们放置在共享模块中 将共享模块导入到客户模块