私の角形のアプリケーションでは、私はhttpレイヤーを扱う2つのサービスを持っていて、もう1つは単にルートのガードであるcanActivate
メソッドを実装していますサービス。たとえば:ルートガードのための別のサービスへの1つのサービスの角度依存性注入
backend.service:
@Injectable()
export class BackendService {
private data: any;
constructor(private http: Http) {
console.log('backend service constructor hit');
this.data = 'initial';
}
getData() {
console.log(this.data);
return this.data;
}
setData(data) {
// http stuff
this.data = data;
}
}
routeguard.service:
@Injectable()
export class RouteguardService implements CanActivate {
constructor(private backendService: BackendService) { }
canActivate() {
return this.backendService.getData() !== 'initial';
}
}
私は私が間違った場所にサービスのいずれかを提供しています信じますか?現在私はproviders
の両方のサービスを私のapp.module
の配列に持っています。しかし、私はconsole.logステートメントで、backend.service
がルーティングの一部として呼び出されたときとコンポーネントがそれを使用するときに別々にnew'dされていることを知ることができるので、データは異なり、データは常に 'initialコンポーネントから何か他のものに設定されているにもかかわらず、canActivateメソッドでチェックされているときに発生します。私はそれをはっきりと説明したいと思っています。
サービスを別の場所に提供する必要があるのですか、それとも何か他のことがまったく間違っていますか?任意のポインターをありがとう。
質問に関連するコードがすべて含まれていません。 http://stackoverflow.com/help/mcveを提供してください。あなたが参照しているコンポーネントとモジュール。 – estus
アプリケーションに2つ以上のモジュールがありますか? – Steveadoo