导航到另一个模块中的组件 (Angular)
Navigate to component in another module (Angular)
我有 app.component,这是默认创建的,这是一个按钮。当我点击它时,我想去login.component。
这是我的 app.module.ts 文件
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing/app-routing.module';
import { AppComponent } from './app.component';
import { MatButtonModule } from '@angular/material/button';
import { MainModule } from './main/main.module';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule, MatButtonModule, MainModule, AppRoutingModule],
providers: [],
bootstrap: [AppComponent],
})
export class AppModule {}
这是我的应用程序-routing.module.ts代码
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { LoginComponent } from '../main/login/login.component';
const routes: Routes = [
{ path: 'main', children: [{ path: 'login', component: LoginComponent }] },
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule],
})
export class AppRoutingModule {}
以下是我尝试执行此操作的方法 - <button mat-raised-button class="btn-default" [routerLink]="['/main/login']">Log in</button>
这里是 stackblitz url 检查代码 Stackblitz
我的问题是,link 更改为 localhost:4200/main/login
,但视图未更改。
我该如何解决这个问题?
这是一个 CSS 问题。左拆分右吐不给任何里面的登录组件space。相反,将您的主页 (main-page)(带有登录和注册按钮的页面)作为其自己的组件,并且仅具有路由器插座的拆分权。
app.component.html
<div class="split left">
<div class="centered">
<h1>Learn what you want.</h1>
<h1>Teach what you love.</h1>
</div>
</div>
<div class="split right">
<router-outlet></router-outlet>
</div>
main-page.component.html
<div class="centered">
<div>
<button mat-raised-button class="btn-default" [routerLink]="['/main/login']">Log in</button>
</div>
<div style="margin-top: 20px">
<button mat-raised-button class="btn-default-transparent">Sign up</button>
</div>
</div>
所以问题不在CSS
问题是我需要将所有组件分开,并且 <router-outlet></router-outlet>
仅在 app.component.ts 文件中。
我在这里为您创建了一个 bug-fixed 版本:Stackblitz
您的问题是它已加载但落后于 app.component.html
模板。
您为 LoginComponent
创建了一个 main
模块。当您有多个模块时,最佳做法是使用我在演示中为您创建的 Lazy Loading。此外,app-component
更好,意思是主应用只有 <router-outlet></router-outlet>
和其他组件的内容加载。
我有 app.component,这是默认创建的,这是一个按钮。当我点击它时,我想去login.component。
这是我的 app.module.ts 文件
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing/app-routing.module';
import { AppComponent } from './app.component';
import { MatButtonModule } from '@angular/material/button';
import { MainModule } from './main/main.module';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule, MatButtonModule, MainModule, AppRoutingModule],
providers: [],
bootstrap: [AppComponent],
})
export class AppModule {}
这是我的应用程序-routing.module.ts代码
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
import { LoginComponent } from '../main/login/login.component';
const routes: Routes = [
{ path: 'main', children: [{ path: 'login', component: LoginComponent }] },
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule],
})
export class AppRoutingModule {}
以下是我尝试执行此操作的方法 - <button mat-raised-button class="btn-default" [routerLink]="['/main/login']">Log in</button>
这里是 stackblitz url 检查代码 Stackblitz
我的问题是,link 更改为 localhost:4200/main/login
,但视图未更改。
我该如何解决这个问题?
这是一个 CSS 问题。左拆分右吐不给任何里面的登录组件space。相反,将您的主页 (main-page)(带有登录和注册按钮的页面)作为其自己的组件,并且仅具有路由器插座的拆分权。
app.component.html
<div class="split left">
<div class="centered">
<h1>Learn what you want.</h1>
<h1>Teach what you love.</h1>
</div>
</div>
<div class="split right">
<router-outlet></router-outlet>
</div>
main-page.component.html
<div class="centered">
<div>
<button mat-raised-button class="btn-default" [routerLink]="['/main/login']">Log in</button>
</div>
<div style="margin-top: 20px">
<button mat-raised-button class="btn-default-transparent">Sign up</button>
</div>
</div>
所以问题不在CSS
问题是我需要将所有组件分开,并且 <router-outlet></router-outlet>
仅在 app.component.ts 文件中。
我在这里为您创建了一个 bug-fixed 版本:Stackblitz
您的问题是它已加载但落后于 app.component.html
模板。
您为 LoginComponent
创建了一个 main
模块。当您有多个模块时,最佳做法是使用我在演示中为您创建的 Lazy Loading。此外,app-component
更好,意思是主应用只有 <router-outlet></router-outlet>
和其他组件的内容加载。