Angular 2 - 可以重定向路由,但使用直接链接不起作用

时间:2016-12-13 01:11:33

标签: angular angular-routing

所以这就是我的app-routing.module.ts看起来像

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

import { AppComponent } from './app.component';
import { IndexComponent } from './index.component';
import { ErrorComponent } from './error.component';

const routes = [ 
    { path: 'hira', redirectTo: 'search', pathMatch: 'full' },
    { path: 'search', component: AppComponent, pathMatch: 'full' },
    { path: 'main', component: AppComponent },
    { path: 'error', component: ErrorComponent },
    { path: '**', redirectTo: 'error'}
];

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

export class AppRoutingModule {}

当我进入网站时,例如www.website.com/hira它会重定向到www.website.com/hira/search。但是,如果我然后直接使用该链接(刷新它),它将无法工作并给我404。

所以我想知道我是否需要生孩子或其他东西。

此外,我现在在hira文件夹中有<base href="./">。我之所以拥有path: 'hira',是因为它没有它就无法工作,所以我也想知道是否有办法让它相对于子文件夹hira。

解决: 使用了hashhistory而不是。可以使用browserhistory但需要htaccess

1 个答案:

答案 0 :(得分:2)

解决方法

使用hashbangs。但是,我不推荐它们。

@NgModule({ imports: [ RouterModule.forRoot(routes), {useHash: true} ], exports: [ RouterModule ] })

<强>修正

根据网络服务器的不同,将其配置为将包括404,401在内的所有请求重定向到同一个index.html页面。

Angular处理来自那里的所有请求,并且能够重定向到不同的路径。

以下是来自核心Angular团队成员的response类似问题。