2017-02-21 8 views
7

アプリでリンクを構築してナビゲートするとすべて動作しますが、アドレスバーに入力すると問題はありません。 最終的には、特定のアプリケーションページ/パスへのリンクを電子メールで送信できるようにしたいと思います。その達成方法がわかりません。角度2.0ディープリンクは機能しません。アドレスバーと同じ

私はangular router guide documentationに従っています。正しく考えて...

私はNodeJS(express付き)を使用しており、サーバーにはすべてのトラフィックがアプリケーションルートにリダイレクトされています。私のindex.htmlを私が設定したベース私は、ブラウザのアドレスバーIにhttp://localhost:8080/vendorsを入力した場合

const appRoutes: Routes = [ 
    { path: 'vendor/registration', component: VendorRegistrationComponent }, 
    { path: 'vendors', component: VendorListComponent }, 
    { path: '', redirectTo: 'vendor/registration', pathMatch: 'full' }, 
    { path: '**', component: PageNotFoundComponent }  
]; 

を次のように私のクライアント敗走/パスが設定されている

<base href="/"> 

app.get("*", function(req, res) { 
    console.error("in get *") 
    res.redirect("/"); 
}); 

http://localhost:8080/vendor/registrationにアクセスしてください。これはサーバーがブラウザにリダイレクトするように指示するので意味があります。

どうすれば私のアプリに深くリンクする必要がありますか?

編集。 角度チュートリアル - "TOUR OF HEROES" - 同じ動作を示します。すなわち、ブラウザのアドレスバーにURLを入力することは直接動作しない。アプリケーションは「読み込み中...」というテキストを表示し、コントローラにルーティングしません。

+0

に記述されたあなたの質問で回答?あなたは何を得ることを期待しましたか? – echonax

+0

私が望むのは、http://www.example.com/vendorsのような電子メールリンクをユーザーに送信し、正しいビュー/コントローラ(ルート要素ではなく)を表示できるようにすることです。 – nsof

+0

あなたのコードは ' ' – idbehold

答えて

1

明示的にディープリンクとはどういう意味ですかangular2 documentation

+0

ありがとう。何らかの理由で、これは[link](https://angular.io/docs/ts/latest/guide/router.html)で参照または言及されていません。 さらに、私は実際にそれを試しましたが、間違った 'index.html'を参照しました。'/dist'フォルダのものではなく、 '/ src'フォルダ内のものを参照します。 – nsof

2

通常、すべてのルーティングはクライアントの角度ルータによって処理されるため、サーバにリダイレクトする必要はありません。

キャッチオールエクスプレスルートを作成する代わりに、すべてのリクエストされたURLに対してindex.htmlを提供するだけです。クライアントアプリケーションがブートストラップすると、angleは要求されたURLに基​​づいて適切なコンポーネントへのルーティングを処理します。 <base href="/">タグは、URLのどの部分がルーティングされているかを角で認識できるようにしておいてください。

const path = require('path'); 

app.get("*", function(req, res) { 
    res.sendFile(path.join(__dirname, '/path/to/your/index.html')); 
}); 
+0

これはついに**の重要な注釈**で私のために働いた**クライアントに送られる 'index.html'ファイルは、元の'/dist'フォルダにあるものではなく '/ dist'フォルダにあります。 src'フォルダにあります。 (少なくともノード+エクスプレスプロジェクトのデフォルト設定で) 'var indexFile = path.join(__ dirname、" dist/index.html "); res.sendFile(indexFile);' – nsof

関連する問題