Angular 2静态页面路由

时间:2017-04-20 13:15:03

标签: javascript angular angular2-routing

我使用angluar 2构建一个静态页面,当我运行ng serve并转到我的页面时,它就像我想要的那样运行。我的意思是我想要的是,它可以通过输入网址进入特定页面,例如www.mysite.com/resume但是当我在ng build --prod之后将其上传到我的网站时我无法前往{ {1}}通过输入,它会显示www.mysite.com/resume

这是我的app.module.ts

404 page not found

这是我的app.component.html

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 { NgsRevealModule } from 'ng-scrollreveal';

import { AppComponent } from './app.component';
import { HomeComponent } from './components/home/home.component';
import { NavbarComponent } from './components/navbar/navbar.component';
import { ResumeComponent } from './components/resume/resume.component';
import { FooterComponent } from './components/footer/footer.component';
import { PortofolioComponent } from './components/portofolio/portofolio.component';

const appRoutes: Routes = [
  {path:'', component: HomeComponent},
  {path:'resume', component: ResumeComponent},
  {path:'portofolio', component: PortofolioComponent},
  {path:'**', component: HomeComponent}
]

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

在我的<app-navbar></app-navbar> <div class='container'> <router-outlet></router-outlet> </div> <app-footer></app-footer> 我有按钮指向特定组件,效果很好。

这是我的navbar.component.html

navbar.component.html

我真正想要的是我可以通过打字输入特定地址,就像我使用<div class="container"> <nav class="nav nav-tabs"> <div class="container" [ngsReveal]="{easing: 'cubic-bezier(0.6, 0.2, 0.1, 1)', duration : 2000, origin: 'top', distance : '80px'}"> <div class="navbar-header"> <a class="navbar-brand" href="/">mysite</a> </div> <div id="navbar" class="collapse navbar-collapse"> <ul class="nav navbar-nav navbar-right item"> <li [routerLinkActive]="['active']" [routerLinkActiveOptions] = "{exact:true}"><a [routerLink]="['/resume']">Resume</a></li> <li [routerLinkActive]="['active']" [routerLinkActiveOptions] = "{exact:true}"><a [routerLink]="['/portofolio']">Portofolio</a></li> </ul> </div><!--/.nav-collapse --> </div> </nav> </div> 时所做的那样

1 个答案:

答案 0 :(得分:1)

之前我遇到过这个问题,我认为是同样的情况:

如果您使用的是Nginx网络服务器,请确保您有正确的规则将任何网址重定向到index.html,例如:

location / {
    # try_files $uri @rewrite;
    try_files $uri /index.html?$query_string;
}

对于Apache我没有真正测试它,但我认为它是相同的情况。