2016-07-01 20 views
1

WebアプリケーションでMVCとAngular2を使用しています。 My ControllerからAngular2が入っているIndexページに値を渡す必要があります。次に、Typescriptを使用して角度からView Bagの値を読み取る必要があります。それをしてもいいですか?私はたくさんの検索をしましたが、何の情報も得ていませんでした!Angular2/TypeScriptでViewbagから値を読み取る方法は?

+1

この回答はあなたに興味がありますhttp://stackoverflow.com/questions/37337185/passing-asp-net-server-parameters-to-angular-2-app/37384405#37384405 – yurzui

答えて

2

基本的に2つのオプションがあります。

オプション#1:要求

は、必要な設定データをフェッチすることになる(サービスを使用して)ルートコンポーネントからGET要求を行うGET。

オプション#2:埋め込みJSONペイロード

このオプションでは、直接のリンク先ページにJSONデータを埋め込むことができます。 Angularアプリからこのデータにアクセスするには、そのデータをグローバル変数として保存する必要があります。その後、アプリケーションからデータオブジェクトを取得するのはかなり簡単です。唯一の事は、エラーが起こりやすいという理由だけで、この場合はグローバル変数を直接読み込まないようにする必要があります。 AppConfigサービスでグローバルアクセスを抽象化する方がよいでしょう。メリットは、あとでGET-requestオプションに切り替えることにした場合、データソースを大幅に変更する必要がないことです。

だから、最初のステップは、多分このように、HTMLの中にJSONを書くことである:それは最適ではないかもしれので

<script> 
    var __appConfig = JSON.parse('@Html.Raw(appConfig)'); 
</script> 

私はC#の専門家ではありません。

export class AppConfig { 
    private _config = window.__appConfig 

    getConfig() { 
    return this._config 
    } 
} 

いずれかを選択する:

その後ヘルパーサービスは、このような何かを見ることができますか?私はAngular 2アプリに渡したいデータの種類に依存すると言います。多くの場合、大きなJSONペイロードがあれば、GETリクエストの方法と一緒に行くのが理にかなっています。一方、単純な変数や小さなデータのチャンクでは、データをHTMLに直接埋め込むことをお勧めします。また、もう1回AJAXリクエストを作成する必要もありません。

関連する問題