当前位置: 首页 > 知识库问答 >
问题:

Angular 11 - 路由器模块 - “路由器插座”不是已知元素

方和豫
2023-03-14

我是Angular的新手,目前正在研究路由。我在组件中使用子路由时遇到了问题。routerLink在组件中没有呈现为链接。如果我使用路由器出口,应用程序会崩溃。

使用路由器出口时,我得到了以下错误信息:

    src/app/gardening/gardening/gardening.component.html:5:1 - error NG8001: 'router-outlet' is not a known element:
1. If 'router-outlet' is an Angular component, then verify that it is part of this module.
2. If 'router-outlet' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message.

5 <router-outlet></router-outlet>
  ~~~~~~~~~~~~~~~

  src/app/gardening/gardening/gardening.component.ts:5:16
    5   templateUrl: './gardening.component.html',
                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    Error occurs in the template of component GardeningComponent.

我用谷歌搜索了错误消息,解决方案始终是模块中缺少路由器模块的导入。我已经导入了路由器模块。

这是我的模块。ts

@NgModule({
declarations: [GardeningComponent, DemogardenComponent],
imports: [
CommonModule, RouterModule
],
exports:[GardeningComponent, DemogardenComponent]

})
export class GardeningModule { }

这是我的应用程序。

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

怎么了,漏了什么?

如果您愿意,您也可以在github上查看我的知识库中的代码:SimpleRouting

共有2个答案

曾德水
2023-03-14

你的问题是因为应用程序模块不知道你的Garderning模块。因此,您得到了当前路由器出口错误。

解决方案如下——只需更新< code>app.module.ts文件,如下所示:

js prettyprint-override">import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';

import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { GardeningModule } from './gardening/gardening.module'; // <=============

@NgModule({
  declarations: [
     AppComponent
  ],
  imports: [
     BrowserModule,
     AppRoutingModule,
     GardeningModule   // <=============
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }
丌官丰羽
2023-03-14

我没有看到你提到的完全相同的错误,但我看到了与缺失导入有关的其他问题。

由于您有单独的家庭园艺模块,因此还需要将它们导入到您的 app.module.ts 文件中:

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

在这两个小更改之后,您的代码可以正常工作。(工作StackBlitz)

 类似资料:
  • 我对角度路由有问题。我有主应用程序路由模块和子模块,具有自己的路由模块和路由器出口,但此子模块中定义的路由使用根路由器出口而不是子路由器出口显示。 我的文件夹结构: app-routing.module.ts app.component.html 家庭教学模块.ts 首页.组件.html 这就是我使用空路径时得到的 - 它可以正确打开主组件。 但是当我输入/register时,我从login.co

  • 我在结构中有一系列角度组件,如下所示。 RootComponent-- 我的问题是来自路由器孙组件中按钮的链接,如何导航到根组件? 应用程序路由 子组件路线

  • 在以下React应用程序中,有两个路由URLhttp://myapp 正确布线到布局构件。但是,URLhttp://myapp/login 也路由到布局组件,而不是登录。如果我将path=“/login”更改为“/sign”,它将正确路由到登录组件。 React路由器中的“/login”路径将其路由到路由是否有特殊之处?或者我设置这个路由的方式有错误吗?

  • 考虑以下事项: 我有一个应用模板,一个HeaderTemboard,和参数化的路由集与相同的处理程序(在应用模板)。我希望在没有找到东西的时候能够服务404路线。例如, /CA/SanFrancisco应该由区域查找和处理,而 /SanFranciscoz应该是404。 下面是我如何快速测试路线的。 问题是 /SanFranciscoz总是由区域页面处理,但我希望它是404。此外,如果我向第一个路

  • anu可以完美与react-router搭配使用。 但强烈建议使用reach router, 这个比react router更好用。 anujs也对它进行改造,让它支持IE8的hashchange reach的官网 https://reach.tech/router resolve: { alias: { react: "anujs", "react-dom":

  • 添加一个自定义的路由器 $prepend = false; Swoole::$php->addRouter(new App\MyRouter, $prepend); 第一个参数为路由器对象,必须实现Swoole\IFace\Router接口 第二个参数如果为true,表示添加到路由表的起始位置,默认为false,表示追加到末尾 底层默认添加了2个路由器Swoole\Router\Rewrite和