How to set application context path in angular2 routing properly?
I have created an Angular project using angular-cli (version : 1.0.0-beta.28.3). I run the application in development environment using "npm start" and the application runs fine in "localhost:4200". Now to replicate production deployment, I wanted to run the application in local WAMP. So, I ran 'ng build -prod', copied the files from 'dist' folder to WAMP's www/student directory. Now when I run the project through WAMP, I end up getting this error :
Obviously, the application was looking for the required js files in the wrong location. I did some research, and found that the context root - in my case 'student' had to be set in "base href="/student" inside the index.html. Due to angular-cli's bug, each time I typed 'ng build -prod', the base href got reset to "/". Found a workaround; typing "ng build -prod --base-href student" set the base href to student.
Now I ran into a new problem. The default page was supposed to show the contents of route 'app-home', but launching the app gives me :
But, both of the routes/ links are working fine. For example clicking 'About Us' changes the url to 'http://localhost:82/student/student/app-about-us' and shows appropriate content.
I am quite sure I have a problem with my routing. Please help me set the routing in a way so that I can get the application running in 'http://localhost:82/student' with sub-urls 'http://localhost:82/student/student/app-home' (default) and 'http://localhost:82/student/student/app-about-us'
app.modules.ts
import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms';
import { HttpModule } from '@angular/http';
import { AppComponent } from './app.component';
import { HomeComponent } from './home/home.component';
import { AboutUsComponent } from './about-us/about-us.component';
import { CarComponent } from './car/car.component';
import { MenuComponent } from './menu.component';
import { CONST_ROUTING } from "app/app.routing";
@NgModule({
declarations: [
AppComponent,
HomeComponent,
AboutUsComponent,
CarComponent,
MenuComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
CONST_ROUTING
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
app.routing.ts
import { Routes, RouterModule } from '@angular/router';
import { HomeComponent } from "app/home/home.component";
import { AboutUsComponent } from "app/about-us/about-us.component";
const MAINMENU_ROUTES: Routes = [
//full : makes sure the path is absolute path
{ path: '', redirectTo: '/app-home', pathMatch: 'full' },
{ path: 'app-home', component: HomeComponent },
{ path: 'app-about-us', component: AboutUsComponent }
];
export const CONST_ROUTING = RouterModule.forRoot(MAINMENU_ROUTES);
menu.component.html
<div class="row">
<div class="col-xs-12">
<ul class="nav nav-pills">
<li routerLinkActive="active"> <a [routerLink]="['/app-home']" >Home</a></li>
<li routerLinkActive="active"> <a [routerLink]="['/app-about-us']" >About Us</a></li>
</ul>
</div>
</div>
app.component.html
<app-menu></app-menu>
<router-outlet></router-outlet>
index.html
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Ang2RouterTest</title>
<base href="/">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" type="image/x-icon" href="favicon.ico">
</head>
<body>
<app-root>Loading...</app-root>
</body>
</html>
Use this option to create build
ng build --base-href .
base href works everywhere.
See Example where i hosted on xampp :
Standard host - ng build --base-href http://www.yourwebsitehere.com/
. Make sure to remember the trailing slash
NodeJS host - ng build
. Make sure to setup your NodeJS server properly though
您可以在RouterModule.forRoot()中使用选项“useHash”。
export const CONST_ROUTING = RouterModule.forRoot(MAINMENU_ROUTES, { useHash: true });
链接地址: http://www.djcxy.com/p/96218.html
上一篇: 检测通用基类