2016-11-23 221 views
0

问题刷新浏览器时出现问题,显示404未找到错误。刷新浏览器angular2

我曾尝试在index.html中添加
但它没用。 还有 LocationStrategy,HashLocationStrategy 但它似乎不起作用。

我使用VS2015与4.5 .NET框架

这是我app.routes.ts

import { NgModule } from '@angular/core'; 
import { Routes, RouterModule } from '@angular/router'; 

import { JobBookingComponent } from './component/jobbooking'; 
import { JobDetailsComponent } from './component/jobbookingdetailscomponent'; 
import { JPTemplateComponent } from './component/jptemplate.component'; 


const routes: Routes = [ 
{ path: '', redirectTo: '/templatejp', pathMatch: 'full' }, 

{ path: 'template', component: JobBookingComponent }, 
{ path: 'templatejp', component: JPTemplateComponent }, 
{ path: 'detail/:templateid', component: JobDetailsComponent } 

]; 

@NgModule({ 
imports: [RouterModule.forRoot(routes)], 
exports: [RouterModule] 
}) 
export class AppRoutingModule { } 

的index.html

<html> 
<head> 
<script>document.write('<base href="/" />');</script> 
<title>Demo</title> 
<meta charset="UTF-8"> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<link rel="stylesheet" href="styles.css"> 
<link rel="stylesheet" type="text/css" href="node_modules/primeng/resources/themes/omega/theme.css" /> 
<link rel="stylesheet" type="text/css" href="node_modules/primeng/resources/primeng.min.css" /> 
<!--<link rel="stylesheet" type="text/css" href="app/resources/icons/css/font-awesome.min.css" />--> 
<!--<script src="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css"></script>--> 

<link href="font-awesome-4.7.0/css/font-awesome.min.css" rel="stylesheet" /> 
<!-- 1. Load libraries --> 
<!-- Polyfill for older browsers --> 
<script src="node_modules/core-js/client/shim.min.js"></script> 
<script src="node_modules/zone.js/dist/zone.js"></script> 
<script src="node_modules/reflect-metadata/Reflect.js"></script> 
<script src="node_modules/systemjs/dist/system.src.js"></script> 
<!-- 2. Configure SystemJS --> 
<script src="systemjs.config.js"></script> 
<link rel="stylesheet" 
     href="https://unpkg.com/[email protected]/dist/css/bootstrap.min.css"> 
<script> 
    System.import('app').catch(function(err){ console.error(err); }); 
</script> 
</head> 
<!-- 3. Display the application --> 
<body> 
<my-app>Loading...</my-app> 
</body> 
</html> 

app.ts

import './rxjs-operator'; 
import { Component, ViewContainerRef } from '@angular/core'; 

@Component({ 
selector: 'my-app', 
template: ` 
<nav> 
<a routerLink="/template" routerLinkActive= "active" > Template </a> 
    <a routerLink="/templatejp" routerLinkActive= "active" > Templatejp </a> 
    </nav> 
<router-outlet></router-outlet>` 
}) 

export class AppComponent { 

    } 

请帮忙解决问题ue 谢谢。

+0

问题到底出在动态添加呢? –

+0

刷新时显示404错误 – user3510028

回答

2

好的问题是,我是进口PathLocationStrategy需要使用HashLocationStrategy 更新(app.module.ts) 通过导入HashLocationStrategy和locationstrategy和供应商加入。

import { NgModule }  from '@angular/core'; 
import { BrowserModule } from '@angular/platform-browser'; 
import { AppComponent } from './app.component'; 
import { HashLocationStrategy, LocationStrategy } from '@angular/common'; 

@NgModule({ 
declarations: [AppComponent], 
imports: [BrowserModule], 
providers: [{provide: LocationStrategy, useClass: HashLocationStrategy}], 
bootstrap: [AppComponent], 
}) 
export class AppModule {} 
0

因此,404错误意味着您的Web服务器(在这种情况下,您在开发应用程序时运行的开发服务器)无法找到该页面。您的应用程序构建没有任何错误?当它运行控制台时应该显示所请求页面的日志以及是否找到它们(http状态200)。

0

由于无法找到路由,因此使用了'@ angular/core'中的{ModuleWithProviders}导入;下面是路由出口示例代码:

import { NgModule } from '@angular/core'; 
import { Routes, RouterModule } from '@angular/router'; 

import { JobBookingComponent } from './component/jobbooking'; 
import { JobDetailsComponent } from './component/jobbookingdetailscomponent'; 
import { JPTemplateComponent } from './component/jptemplate.component'; 


const routes: Routes = [ 
{ path: '', redirectTo: 'templatejp', pathMatch: 'full' }, 

{ path: 'template', component: JobBookingComponent }, 
{ path: 'templatejp', component: JPTemplateComponent }, 
{ path: 'detail/:templateid', component: JobDetailsComponent } 

]; 

@NgModule({ 
export const routing: ModuleWithProviders = RouterModule.forRoot(appRoutes, { useHash: true }); 
}) 
export class AppRoutingModule { } 
1

你的索引页添加<base href="/" />而不是从脚本