ค้นหาเว็บไซต์

javascript - การจัดเส้นทาง Angular 2 (CLI) ใช้งานไม่ได้ (ไม่สามารถอ่านคุณสมบัติ 'split' ของ undefined)


ทำไมการจัดเส้นทางจึงใช้ได้เฉพาะกับคอมโพเนนต์ที่นำเข้าครั้งแรกหลังจาก AppComponent (ตัวอย่างโค้ดด้านล่าง: การจัดเส้นทางใช้ได้เฉพาะกับ "PageNonFound")? นอกจากนี้ ฉันสังเกตเห็นข้อผิดพลาดหลังจากเพิ่มการจัดเส้นทางไปยังโปรเจ็กต์ของฉัน

ข้อผิดพลาด

Error in ./AppComponent class AppComponent - 
inline template:13:42 caused by: 
Cannot read property 'split' of undefined

แอป.โมดูล.ts

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

import { AppComponent } from './app.component';
import { PageNotFoundComponent } from './page-not-found/page-not-found.component';
import { HomeComponent } from './home/home.component';

const appRoutes: Routes = [
  { path: '', redirectTo: '/home', pathMatch: 'full' },
  { path: '**', component: PageNotFoundComponent },
  { path: 'home', component: HomeComponent }
];

@NgModule({
  declarations: [
    AppComponent,
    PageNotFoundComponent,
    HomeComponent
  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    RouterModule.forRoot(appRoutes)
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }

App.component.ts

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  title = 'testing';
}

แอป.component.html

<nav class="nav navbar navbar-custom navbar-fixed-top" role="navigation">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" [routerLink]="['/home']">Test</a>
    </div>
    <div>
      <div class="collapse navbar-collapse" id="navbar">
        <ul class="nav navbar-nav">
          <li><a [routerLink]="['/home']" [routerLinkActive]="active">Home</a></li>
        </ul>
      </div>
    </div>
  </div>
</nav>
<router-outlet></router-outlet>

เวอร์ชัน :

angular-cli: 1.0.0-beta.28.3
node: 6.9.4
os: darwin x64
@angular/common: 2.4.9
@angular/compiler: 2.4.9
@angular/core: 2.4.9
@angular/forms: 2.4.9
@angular/http: 2.4.9
@angular/platform-browser: 2.4.9
@angular/platform-browser-dynamic: 2.4.9
@angular/router: 3.4.9
@angular/compiler-cli: 2.4.9

คำตอบ #1

ใช้ routerLinkActive="active"

หรือ

[routerLinkActive]="['active']"

และเปลี่ยนลำดับของเส้นทาง

const appRoutes: Routes = [
  { path: 'home', component: HomeComponent },
  { path: '', redirectTo: 'home', pathMatch: 'full' },
  { path: '**', component: PageNotFoundComponent }, 
];

บทความที่เกี่ยวข้อง