【问题标题】:Routing: Component can not be displayed路由:组件无法显示
【发布时间】:2020-03-12 14:09:05
【问题描述】:

我是 Angular 新手,我想创建一个 URL 为 localhost:4200/register 的页面。

这是我尝试过的:

src/app/app-routing-modules.ts

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

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

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

src/app/register/register.component.html

<p>register works!</p>
<router-outlet></router-outlet>

我还在 app.modules.ts 中导入了AppRoutingModule

如果 URL 为 localhost:4200/register,则页面包含应用组件,但我的组件“注册”无法显示。

我做错了什么?

【问题讨论】:

  • 路由器插座不能在注册组件的模板中。它指示当 URL 为 //register 时路由器应在何处插入注册组件。所以它必须在你的应用组件模板中。 angular.io/guide/router#router-outlet

标签: angular


【解决方案1】:

&lt;router-outlet&gt;&lt;/router-outlet&gt;应该添加到被引导的组件中(默认为AppComponent)

试试这样:

const routes: Routes = [
  { path: '', component: LandingComponent }
  { path: 'register', component: RegisterComponent }
];

register.component.html

<p>register works!</p>

app.componet.html

<router-outlet></router-outlet>

注意:LandingComponent 只是一个您希望默认显示的组件,如主页、登录页面等

【讨论】:

  • 为什么在root的时候会在app组件里面显示app组件?
  • @JBNizet 修改为LandingComponet,只想在默认根目录下添加组件名
  • 感谢您的回答。如果我在我的 AppComponent 中使用&lt;router-outlet&gt;&lt;/router-outlet&gt;,其他组件也会显示,无论 url 是否包含“/register”。我只想显示注册模板。
  • 如果在app.comonent中给出router outlet,只会显示当前路由。例子,注册组件在/register,登录组件在/login
猜你喜欢
  • 2020-10-24
  • 1970-01-01
  • 2018-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-21
  • 2021-10-09
相关资源
最近更新 更多