2017-08-05 16 views
5

この記事には角度4のタグが付いていますか? ルーティング?私はそのタグを認識しています。私の問題は、角度4のルーティングと を行うことではなかった - それは私がしなかった間違いの質問cozであった その時に起こっていたことを理解しています。ここの解決策は 実際の角度4ルーティングに役立つ人を助けないので、 にそのようにタグ付けする必要があり、私はその変更を拒否し続けることに同意しません。私は繰り返し述べます:PHP、nodejs、distフォルダ、そして他のものを一切理解せずに、標準のホスティングパッケージを使用して角ウェブアプリケーションを起動しようとするのは誤りです。私は多くの人が似たような間違いを犯しているのを見ていますが、ウェブサイトの問題としてあまり知られていないほどルーティングの問題ではないことを知っておく必要があります。角度4のルーティング

角度4ルーティングが機能しません。

  • 角度4のルーティングは角度2とは異なります。角度4のコメントで同様の問題に遭遇したことのある人のみ可能です。多くの変更があったように見え、2017年のガイドラインに従ってルーティングを設定しました。これに古いソリューションにフラグを付けることは、単に混乱と役に立たないです - 私は、私が使用したくない角度に新しいですし、唯一の4の経験を持っている、特にとしてHashLocationStrategy *
私は自分のドメインに移動し、使用することができます

私のメニューコンポーネントはページ間を移動することができますが、mydomain/homeを入力すると空白のページが表示されます。以前のバージョンのAngularについても同様の質問が他の人に聞こえていたようですが、新しい設定の人はいません。

私は非常に新しいんだ怖いapp.router.ts

import { routes } from './app.router'; 
app.module.tsで

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

import { HomeComponent } from './home/home.component'; 
import { ArtComponent } from './art/art.component'; 
import { MusicComponent } from './music/music.component'; 
import { EventsComponent } from './events/events.component'; 

export const router: Routes = [ 
    { path: '', redirectTo: 'home', pathMatch: 'full'}, 
    { path: 'home', component: HomeComponent }, 
    { path: 'art', component: ArtComponent }, 
    { path: 'music', component: MusicComponent }, 
    { path: 'events', component: EventsComponent } 
]; 

export const routes: ModuleWithProviders = RouterModule.forRoot(router); 

を持っています角に!

これらはクロームインスペクタでエラーです:

polyfills.71b130084c52939ca448.bundle.js:1 [Deprecation] Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/. 
(anonymous) @ polyfills.71b130084c52939ca448.bundle.js:1 
firebug-lite.js:30396 [Deprecation] 'window.webkitStorageInfo' is deprecated. Please use 'navigator.webkitTemporaryStorage' or 'navigator.webkitPersistentStorage' instead. 
getMembers @ firebug-lite.js:30396 
home Failed to load resource: the server responded with a status of 404() 

私はここと同様のビルドで問題に至るまで、この問題を縮小している:https://github.com/angular/angular-cli/issues/5113

はに満足のいく答えがあるように思えません。その質問 - もし私のビルド作業を行うために私の--base-hrefを指す場所を教えてもらえますか?

+0

コンソールにエラーが表示されますか? – LLai

+0

どのようなWebサーバーを使用していますか? 'index.html'ルートへの404リクエストをすべて処理するようにWebサーバーの設定を変更する必要があります – PierreDuc

+0

Apache?私は物事の終わりについて十分に分かっていません - 私はAngular Cliビルドツールを使ってdistフォルダを作成し、それをFTP経由でアップロードしました。私はAngularの内部動作についてはあまりよく分かりません。私はコンソールから404リダイレクトを指定しようとしています。角度は内部的にリダイレクトを処理する必要がありますか、ルーティングが機能していませんか? – Davtho1983

答えて

2

私の角のコードは問題ないと判明しました。問題は、私のホスティングプロバイダのサーバーにありました。 distパッケージに.htaccessファイルを含める必要がありました

0

あなたは@NgModuleデコレータとそこ輸入あなたのルート

例えば

@NgModule文では動作しません、次の({

imports: [ 
    RouterModule.forRoot(routes)// provide your routes array here 
] 

})

、 エクスポートを使用する必要がありますconstルート:ModuleWithProviders = RouterModule。forRoot(ルーター);

+0

残念ですRavinder私はAngularにとってはとても新しいので、それよりも明確にする必要があります! @NgModuleにルート配列を追加するためのtypescript構文は何ですか? app.router.tsに@NgModuleを追加することを意味しますか?これは何をしているのですか?そしてModuleWithProvidersはなぜ機能しませんか? – Davtho1983

0

方法 - 1

でapp.module.ts

. . . 

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




imports: [ 
RouterModule.forRoot([ 
{ 
    path: '', 
    redirectTo: 'home', 
    pathMatch: 'full' 
}, 
{ 
    path: 'home', 
    component: HomeComponent 
} , 
{ 
    path: 'art' , 
    component: ArtComponent 
} 

. . . 


]), 

法-2 がapp.router ::

. . . 
export const router: Routes = [ 
{ path: '', redirectTo: 'home', pathMatch: 'full'}, 
{ path: 'home', component: HomeComponent }, 
{ path: 'art', component: ArtComponent }, 
{ path: 'music', component: MusicComponent }, 
{ path: 'events', component: EventsComponent } 
]; 
. . . . 

わずか以下追加あなたのやり方であなたのapp.module.ts

import { routes } from './app.router'; 
. . . 
imports : [ 
RouterModule.forRoot(routers) 
] 

リファレンス:: Angular Routing and Navigation

それが動作しない場合は、私がコメントで知らせてください。

+0

こんにちは私は次のエラーが表示されます:/src/app/app.module.ts(50,5)のエラー:名前 'RouterModule'を見つけることができません。 /src/app/app.module.ts(50,27)のERROR:名前 'ルーター'が見つかりません。 – Davtho1983

+0

'{angle/router'から{RouterModule}をインポートします。 './app.router'から{router}をインポートします。 RouterModule.forRoot(ルーター)では、これはng serveでcliで修正されますが、ビルドでは修正されません。私は何が起こっているのか分かりません:( – Davtho1983

+0

こんにちは、コードを共有できる方法はありますか?plunkerまたはgithubかもしれませんか?それでは、私が問題をよりよく理解するのを助ける少しの情報を提供してください。最初からAngle/Cli? –

関連する問題