เปลี่ยนเส้นทาง URL แต่ไม่แสดงหน้าที่เกี่ยวข้อง

กำลังพยายามนำทางระหว่างหน้าต่างๆ แต่ไม่ได้ผล ฉันได้กำหนดเส้นทางแล้ว กำลังใช้ routerLink ตามเอกสาร Angular และได้ตรวจสอบหัวข้อ Stackoverflow นับไม่ถ้วน แต่ก็ยังไม่สามารถทำงานได้

โครงการของฉันเป็นโครงการใหม่ ดังนั้นโดยพื้นฐานแล้วฉันมีเพียง 3 องค์ประกอบเท่านั้น: _ AppComponent (พาเรนต์ไปยังอีก 2 รายการ) _ WelcomePageComponent _ LandingPageComponent

นี่คือ app.module.ts ที่ฉันกำหนดเส้นทางไว้

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';

import { AppComponent } from './app.component';
import { WelcomePageComponent } from './welcome-page/welcome-page.component';
import { LandingPageComponent } from './landing-page/landing-page.component';

const routes: Routes = [
  { path: '', component: AppComponent},
  { path: 'welcome', component: WelcomePageComponent },
  { path: 'landing', component: LandingPageComponent }
];

@NgModule({
  entryComponents: [
    WelcomePageComponent,
    LandingPageComponent
  ],
  declarations: [
    AppComponent,
    WelcomePageComponent,
    LandingPageComponent
  ],
  imports: [
    BrowserModule,
    RouterModule.forRoot(routes)
  ],
  exports: [RouterModule],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

นี่คือ html ที่ฉันพยายามสร้างลิงก์ไปยังหน้ายินดีต้อนรับ

<ul>
  <li>
    <a [routerLink]="['/welcome']" routerLinkActive="active">Welcome Page</a>
  </li>
</ul>


<router-outlet></router-outlet>

เมื่อคลิกลิงก์ URL จะไม่เปลี่ยนแปลงแต่เปลี่ยนหน้า แม้ว่าจะแสดงเนื้อหาหน้ายินดีต้อนรับ แต่ฉันอยากจะเปลี่ยนหน้าทั้งหมด

ฉันทำอะไรผิดที่นี่?

ขอบคุณ


person Seb    schedule 11.08.2019    source แหล่งที่มา
comment
มันแสดง WelcomeComponent ใน <router-outlet> จริงหรือไม่ เพราะนั่นคือสิ่งที่ควรทำ...   -  person Will Alexander    schedule 11.08.2019
comment
ใช่ ‹router-outlet› แสดง WelcomeComponent อย่างถูกต้อง ฉันเพิ่มมันเพื่อทดสอบ อย่างไรก็ตาม ฉันไม่สลับหน้าไปสิ้นสุดที่หน้ายินดีต้อนรับด้วยเราเตอร์ลิงก์   -  person Seb    schedule 11.08.2019
comment
เราเตอร์เชิงมุมใช้เพื่อตั้งค่าแอปพลิเคชันหน้าเดียว แนวคิดทั้งหมดก็คือไม่มีการโหลดหน้าซ้ำในเบราว์เซอร์ คุณกำลังพยายามบรรลุผลอะไรกันแน่?   -  person Will Alexander    schedule 11.08.2019
comment
แค่ต้องการนำทางระหว่าง 3 องค์ประกอบที่ฉันมีจนถึงตอนนี้ และเชื่อว่ามันหมายถึงการเปลี่ยนหน้าเมื่อนำทางจากที่หนึ่งไปยังอีกที่หนึ่ง โดยการแก้ไข url โดยใช้ routerLink   -  person Seb    schedule 11.08.2019


คำตอบ (1)


คุณจะต้องเปลี่ยนการออกแบบเล็กน้อยเพื่อให้ได้สิ่งที่คุณต้องการ

ขั้นตอนที่ 1 : สร้าง NavComponent ซึ่งจะมีลิงก์การนำทางทั้งหมด ลบลิงก์ออกจาก AppComponent ควรมีแท็ก router-outlet เท่านั้น

ขั้นตอนที่ 2 : อัปเดตการกำหนดค่าเส้นทางดังนี้:

const routes: Routes = [
  { path: '', component: NavBarComponent},
  { path: 'welcome', component: WelcomePageComponent },
  { path: 'landing', component: LandingPageComponent }
];

เพิ่ม โค้ดสาธิต

person Amit Chigadani    schedule 11.08.2019
comment
การเก็บลิงก์ทั้งหมดใน NavComponent เป็นส่วนหนึ่งของแนวทางปฏิบัติที่ดีที่สุดที่ควรปฏิบัติตามหรือไม่ ถ้าใช่ขอบคุณสำหรับคำแนะนำ อย่างไรก็ตาม หลังจากตรวจสอบโค้ดสาธิตของคุณแล้ว ฉันมีปัญหาในการทำความเข้าใจว่าทำไมเราเตอร์ลิงค์ของคุณจึงทำงาน เนื่องจากไวยากรณ์ของพวกมันดูเหมือนคล้ายกับที่ฉันลองใช้ - person Seb; 11.08.2019
comment
ใช่ และนั่นคือสิ่งที่ผมพูดถึงในแต่ละขั้นตอน การปรับโครงสร้างโค้ดใหม่ - person Amit Chigadani; 11.08.2019