2016-11-15 64 views
7

我想用Firebase托管一个角度为2的应用(使用角度cli创建),但我的路由不工作。angular-cli Firebase托管Angular 2路由器不工作

我创建了一个项目,其中包含角色2和打字稿,用于我正在处理的站点,我想要一个静态隐私策略页面。

当我在浏览器中执行

ng serve 

,并导航到http://localhost:4200/privacy-policy我得到我所期望的内容。

这里所推荐的角2路线页面级

@NgModule({ 
    declarations: [ 
     AppComponent, 
     HomeComponent, 
     TermsOfServiceComponent, 
     PrivacyPolicyComponent, 
     PageNotFoundComponent 
    ], 
    imports: [ 
     AlertModule, 
     BrowserModule, 
     FormsModule, 
     HttpModule, 
     RouterModule.forRoot([ 
      {path: 'privacy-policy', component: PrivacyPolicyComponent}, 
      {path: 'terms-of-service', component: TermsOfServiceComponent}, 
      {path: '', component: HomeComponent}, 
      {path: '**', component: PageNotFoundComponent} 
     ]) 
    ], 
    providers: [], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { 
} 

我配置了火力地堡在这里我的项目托管的代码是我的配置文件 -

{ 
    "database": { 
    "rules": "database.rules.json" 
    }, 
    "hosting": { 
    "public": "dist" 
    } 
} 

要部署我运行

ng build --prod 
firebase deploy 

当我导航到 https://MY-APP.firebaseapp.com/ 该应用程序加载的默认路由罚款。

然而,当我尝试导航到 https://MY-APP.firebaseapp.com/privacy-policy 我得到404

我本来期望这个工作,因为它没有与NG服务。

任何帮助将不胜感激。

回答

11

在你app.module.ts文件只需添加以下的事情:

声明

import { LocationStrategy, HashLocationStrategy} from '@angular/common'; 

和供应商增加下面

@NgModule({ 
     declarations: [...], 
     imports:[...], 
     providers:[..,{ provide: LocationStrategy, useClass: HashLocationStrategy },..] 
     ..., 
    }) 

希望这将解决您的问题。

如果可能,请将您的路线保存在单独的文件中。

干杯

+0

这解决了我的问题。为了澄清,你说在使用角度js的firebase托管中,我需要使用完整路径的URL片段。 https://MY-APP.firebaseapp.com/#/privacy-policy –

16

反应迟缓,但因为我今天所面临的同样的问题,当我部署了我的火力地堡的应用程序,这里是它的快速修复:

在你firebase.json文件,更新您的托管密钥通过定义重写规则:

 
    "hosting": { 
    "public": "dist", 
    "rewrites": [ { 
     "source": "**", 
     "destination": "/index.html" 
    } ] 
    } 
+0

这就是答案,因为我不想在我的WebApp中使用HashLocationStrategy。谢谢@Vlad – andreasonny83

+0

这对我有用。 – user482594

+0

这应该是公认的答案 –