在开发人员部分(localhost:4200)工作正常。完成构建应用程序加载和工作正常但url当我键入并按Enter键它不起作用。
我的路由器:
export const appRoutes : Routes = [
{ path: '', redirectTo: 'material', pathMatch: 'full' },
{path:'material',component: MaterialComponent},
];
和我的module.ts文件
imports: [
RouterModule.forRoot(appRoutes,{ enableTracing: true }),BrowserModule,FormsModule,HttpModule,MaterialModule,BrowserAnimationsModule,RouterModule
],
错误:
为什么在构建后提供自定义网址无效?
答案 0 :(得分:0)
问题是Angular在dns(localhost:4200
)部分之后处理了url。因此,当您输入localhost:4200/someurl
时,网络会向您的后端查询该完整网址,如果它不存在,您将获得404.您有2个选项:
1)使用我不推荐的HashLocation策略,因为它打破了AoT。
2)在后端代码中定义重定向功能。对于nodejs,我们这样做:
app.get('/*', function(req, res, next) {
res.sendFile('index.html', { root: __dirname + '/dist' });
});
相关主题:Angular 2.0 router not working on reloading the browser
答案 1 :(得分:0)
我已经使用Hash解决了问题。我们需要在module.ts中导入以下模块
import { HashLocationStrategy, LocationStrategy } from '@angular/common';
我们需要在module.ts文件中包含以下提供的提供程序。
providers: [AppCommonService,{provide: LocationStrategy, useClass: HashLocationStrategy}],