2017-01-10 17 views
1

Server Side Rendering in Angular 2でブラウザのローカルストレージにアクセスするには、どのようにすればよいでしょうか?私はこれに関連するstackoverflowを発見した:localStorage is not defined (Angular Universal)。しかし、私はそれに使用されているプロバイダのコンセプトを得ていませんでした。誰もmain.browser.tsとmain.node.tsで使用されているプロバイダの正確な意味を簡単に説明できますか?サーバサイドレンダリングのブラウザローカルストレージに角2でアクセスしますか?

また、モジュールangular-2-localstorageが見つかりました。それでは、サーバー側のローカルストレージにアクセスするための最良の方法はありますか?

+0

HTML5のローカルストレージをアクセスすることができますか?できません。これはクライアント側の機能です。 – zurfyx

+0

サーバー側でローカルストレージにアクセスする方法は?サーバーサイドでは最初のリクエストがサーバーに送られ、レンダリングされたHTMLがレンダリングされて返されるため、サーバーはローカルストレージにアクセスできます。私の場合、ローカルストレージにトークンを格納しています。サーバ側? –

+0

@zurfyx質問のポイントです... – Ced

答えて

0

これを行うには、PLATFORM_IDトークンをコンストラクタに挿入するのが好ましい方法です。 PLATFORM_IDは、不透明なプラットフォームIDを示すトークンです。 localStorageがDOM上にあるので、isPlatformBrowser()またはisPlatformServer()への呼び出しを使用して、PLATFORM_IDがブラウザまたはサーバーにあるかどうかを確認できます。 PLATFORM_IDがブラウザ上にある場合、DOMは

import { Component, OnInit, Inject, PLATFORM_ID }; 
import { isPlatformBrowser } from '@angular/common'; 
.... 
@Component({ 
    export class MyComponent implements OnInit { 
    constructor(@Inject(PLATFORM_ID) private: platformId: Object){} 

    ngOnInit() { 
     if(isPlatformBrowser(this.platformId)){ 
     //do something 
     } 
    } 
    } 
)} 

リンク

Accessing the DOM in Angular Universal

Local Storage in Angular Universal

関連する問題