2017-08-22 13 views
0

私のモデルの状態を追跡するために使用しているサービスがあります。私はこのサービス変数のプロパティにアクセスしたいと思う複数のコンポーネントがあります。最初のコンポーネントがinitにロードされるとき、私はモデルを設定しましたが、ルート変更後に2番目のコンポーネントからこのモデルにアクセスしようとすると、変数は未定義になりました。以下は、私が話していることの例です。Angular2ルート変更時にサービス変数がリセットされる

コンポーネント1

constructor(private service: Service, private route) 

ngOninit(){ 
    this.service.setModel(); 
    console.log(this.service.getModel()); <-- works fine 
} 

componentButton1Click(){ 
    route.navigateByUrl(component2route) <--works fine 
} 

コンポーネント2

constructor(private service: Service) 

ngOninit(){ 
    console.log(this.service.index); <-- undefined 
} 

サービス

private index: number; 

constructor(private http: Http) 

getModel(){ 
    return this.index; <-- works fine 
} 

setModel(){ 
    this.index = this.http.get('somejsonfile.json').index; 
} 

答えて

3

この問題の最も一般的な原因は、サービスが複数回登録されていることです。それぞれのコンポーネントとモジュールのprovidersアレイの内容を確認し、ONEに登録されていることを確認してください。ここで

は、コードスニペットです:

providers: [ 
    ProductService, 
    ProductGuardService 
    ] 

これらは、これはそれだった@Componentまたは@NgModuleメタデータ

+0

の一部です!私はサービスをグローバルに持っていて、複数のモジュールプロバイダでそれを持っていたので、すべてを取り出してapp.moduleに入れました。 – Monzingo

+0

は、私が数分で答えを受け入れることができます – Monzingo

関連する問題