我正在为自己的学习做一个项目,并坚持这个简单的问题 . 我有第一页/主页作为登录/注册页面 . 现在我想用路由替换其他组件的页面 . 当我点击注册时,我想只看到注册表单组件 . 我有自己的entry.routing模块ENTRY,有三个组件登录组件,寄存器组件和寄存器形式组件 . 在第一页我正在查看登录和注册组件,他们的指令在app组件的html中查看它们 . 如何在视图中将表单app.component更改为register-form.component?
这是我的一些代码:
app.component.html
<div class="flex-row">
<div class="flex-grow-one logo">
<h1>Something</h1>
</div>
<div class="flex-column flex-grow-one entry-section">
<app-login></app-login>
<div class="separation"></div>
<app-register></app-register>
</div>
app.module.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { FormsModule } from '@angular/forms';
import { HttpClientModule } from '@angular/common/http';
import { EntryModule } from './modules/entry/entry.module';
import { HeaderComponent } from './shared/components/header/header.component';
@NgModule({
declarations: [
AppComponent,
HeaderComponent
],
imports: [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
HttpClientModule,
EntryModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
entry.routing.ts
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { RegisterFormComponent } from './components/register-form/register-form.component';
const entryRoutes: Routes = [
{ path: 'register-form', component: RegisterFormComponent }
];
@NgModule({
imports: [
RouterModule.forRoot(
entryRoutes
)
],
exports: [
RouterModule
]
})
export class EntryRouting {}
export const EntryRoutingComponents = [
RegisterFormComponent
];
register.component.html
<div class="card">
<div class="card-title">
<h2>REGISTER</h2>
</div>
<div class="card-content">
<div class="card-form">
<div class="card-input">
<input type="Email" name="Email" placeholder="Email"/>
</div>
<div class="card-input">
<input type="password" name="password" placeholder="Password"/>
</div>
<div class="card-actions">
<button routerLink="/register-form" class="button-register">Register</button>
</div>
</div>
</div>
</div>
我知道必须有一个路由器插座,但我真的不知道放在哪里,因为如果我把它放在register.component.html中,它会在同一个视图上显示寄存器形式的组件,其中路由器插座是 .
1 回答
定义路由模块,您可以在其中定义URL及其子URL . 在模块中,为registercomponent创建父组件 . 假设您的主网址是/ home,由Rootcomponent控制,它显示页眉和页脚以及中间的一些内容 . 所以根组件的html可能如下所示: ``
`<div>some header info</div>
<router-outlet></router-outlet>
<div>some footer info</div>` `` 路径模块应如下所示: `const routes: Routes = [{ path: '/home', component: RootComponent, children: [ { path: '/login', component: AppComponent, }, { path: '/registration', component: RegisterComponent, } ] } @NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule], }) export myRouteModule;`
将模块注入根模块 .
`@NgModule({ declarations: [ RootComponent, AppComponent, registerComponent, ], imports: [ myRoutModule ] })`
页面的中间内容由当前路由动态控制 . 如果网址是/ home / login,则会显示应用视图 . 对于/ home / registration,将显示寄存器组件 .
希望这会有所帮助 .