2017-04-11 7 views
0

の残りの部分を約束を待ちます値を返す必要があります。しかし値は最初に設定されていません。 getVariableは、コンストラクタでの約束が解決するまで待つことができますか?どのように私は私のlocalStorageで変数を検索私のサービスでは、実行前にコード

+0

あなたのproblにいくつかのコンテキストを提供できるならem。この値を文字列補間に使用すると、変更検出が発生するのを待つだけで済みます。 –

答えて

0

ルートリゾルバを使用することも、OnInitインターフェイスを使用することもできます。 約束が解決されるのを待つ必要がある場合は、リゾルバを使用してください。ここで

は一例です:あなたのルーティング設定で

@Injectable() 
export class MyResolver implements Resolve<any> { 

    constructor(
    private storage: MyStorageService,) { 
    } 

    resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Promise<any> { 

    return this.storage.get('value').then(
      (val) => { 
       return val; 
      }, 
      () => { 
       return 'no value'; 
      }); 
    } 
} 

、次のようにリゾルバにあなたのルートをリンク:

{ 
    path: 'myyPath', 
    component: MyComponent, 
    resolve: { 
     myResolvedValue: MyResolver // myResolvedValue is the key under which you'll be able to retrieved the resolved value. You can put whichever key you want 
    }, 
    }, 

そして最後に、バインドルートデータの変更コンポーネントに(ということに注意してくださいあなたはOnInitを実装しなければなりません):

constructor(private route: ActivatedRoute) { 

} 

ngOnInit(): void { 
    this.route.data.subscribe(data => { 
     this.value= data['myResolvedValue']; 
    }); 
    } 
関連する問題