最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Angular 2 (CLI) Routing don't work (Cannot read property 'split' of undefined) - Stack Over

programmeradmin0浏览0评论

Why routing works only for first imported ponent after AppComponent (example code below: routing works only for "PageNonFound")? Also, I noticed error after adding routing to my project

Error

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

App.module.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 './appponent';
import { PageNotFoundComponent } from './page-not-found/page-not-foundponent';
import { HomeComponent } from './home/homeponent';

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

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

Appponent.ts

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

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

Appponent.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>

Vers:

angular-cli: 1.0.0-beta.28.3
node: 6.9.4
os: darwin x64
@angular/mon: 2.4.9
@angular/piler: 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/piler-cli: 2.4.9

Why routing works only for first imported ponent after AppComponent (example code below: routing works only for "PageNonFound")? Also, I noticed error after adding routing to my project

Error

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

App.module.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.ponent';
import { PageNotFoundComponent } from './page-not-found/page-not-found.ponent';
import { HomeComponent } from './home/home.ponent';

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

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

App.ponent.ts

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

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

App.ponent.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>

Vers:

angular-cli: 1.0.0-beta.28.3
node: 6.9.4
os: darwin x64
@angular/mon: 2.4.9
@angular/piler: 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/piler-cli: 2.4.9
Share Improve this question edited Jun 19, 2017 at 9:45 laser 1,37613 silver badges14 bronze badges asked Mar 5, 2017 at 23:02 Evan BorEvan Bor 291 silver badge5 bronze badges 2
  • share your app.ponent.html – elmiomar Commented Mar 5, 2017 at 23:06
  • @Omarllias done – Evan Bor Commented Mar 5, 2017 at 23:10
Add a ment  | 

1 Answer 1

Reset to default 10

use routerLinkActive="active"

or

[routerLinkActive]="['active']"

and change order of routes

const appRoutes: Routes = [
  { path: 'home', ponent: HomeComponent },
  { path: '', redirectTo: 'home', pathMatch: 'full' },
  { path: '**', ponent: PageNotFoundComponent }, 
];
发布评论

评论列表(0)

  1. 暂无评论