私は@ngrx/store
オブザーバブルとオブザーバブルを利用しています。ユーザーの JWT など、ユーザーに関する情報を設定するユーザー レデューサーがあります。
モデルをサブスクライブするルートにANavigationService
が注入され、ユーザーのトークンの存在に基づいてルーティングされます。Aはローカル ストレージを読み取り、結果をレデューサーにディスパッチします。AppComponent
user
UserService
user
問題は、ホームページにルーティングしようとすると、goToLogin()
以下のエラーが表示されることです...あまり情報がありません。
ルート コンポーネントがまだ設定されていないと推測しています。アプリケーションがロードされるのを待ってからルーティングする方法はありますか? または、以下のエラーは別の問題を示していますか?
@Injectable()
export class NavigationService {
private subscription: any;
constructor(public router:Router, private userService: UserService) {
this.subscription = this.userService.token$.subscribe(token => {
if (token) {
this.goToSecretStuff();
} else {
this.goToLogin();
}
});
}
TypeError: Cannot read property 'constructor' of undefined
at Object.implementsOnDestroy (pipe_lifecycle_reflector.ts:2)
at Function.ChangeDetectionUtil.callPipeOnDestroy (change_detection_util.ts:209)
at AbstractChangeDetector.ChangeDetector_CohortList_0.dehydrateDirectives (viewFactory_CohortList:91)
at AbstractChangeDetector.dehydrate (abstract_change_detector.ts:177)
at AbstractChangeDetector.destroyRecursive (abstract_change_detector.ts:200)
at AbstractChangeDetector.destroyRecursive (abstract_change_detector.ts:207)
at AbstractChangeDetector.destroyRecursive (abstract_change_detector.ts:207)
at AppView.destroy (view.ts:159)
at AppViewManager_.destroyViewInContainer (view_manager.ts:286)
at ViewContainerRef_.remove (view_container_ref.ts:166)
at ComponentRef_.dispose [as _dispose] (dynamic_component_loader.ts:283)
at ComponentRef_.dispose (dynamic_component_loader.ts:87)
at router_outlet.ts:108
at e.run (zone-microtask.min.js:8)
at e.run (ng_zone.ts:371)
at zone-microtask.min.js:8
at z (zone-microtask.min.js:8)
at A (zone-microtask.min.js:8)
at zone-microtask.min.js:8
at zone-microtask.min.js:1
at microtask (ng_zone.ts:410)
at e.run (zone-microtask.min.js:8)
at e.run (ng_zone.ts:371)
at zone-microtask.min.js:8
at MutationObserver.h (zone-microtask.min.js:8)