Angular:无法读取null的属性’component’
发布时间:2020-12-17 17:47:04 所属栏目:安全 来源:网络整理
导读:我有一个奇怪的问题.我有一个像这样的基本路由配置: const appRoutes: Routes = [ {path: '',redirectTo: '/search',pathMatch: 'full'},{path: 'login',component: LoginComponent },{path: 'dashboard',component: DashboardComponent,canActivate: [Only
我有一个奇怪的问题.我有一个像这样的基本路由配置:
const appRoutes: Routes = [ {path: '',redirectTo: '/search',pathMatch: 'full'},{path: 'login',component: LoginComponent },{path: 'dashboard',component: DashboardComponent,canActivate: [OnlyLoggedInGuard]},{path: 'search',component: SearchComponent,canActivate: [OnlyLoggedInGuard]} ]; 在应用HTML上,我有条件地导入路由器插座: <div *nfIf="condition"> ... <router-outlet></router-outlet> ... </div> <div *nfIf="!condition"> ... another dom construction <router-outlet></router-outlet> ... </div> 我拦截(使用HttpInterceptor)HTTP 401错误重定向到登录页面.在我的http拦截器中的某些意义上我有这样的意思: this._router.navigate(['/login',{error:'I am an error message'}]); 当我在仪表板上并且发生401时,我正确地重定向到具有正确错误参数的登录页面. core.es5.js:1020 ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'component' of null TypeError: Cannot read property 'component' of null at PreActivation.webpackJsonp.../../../router/@angular/router.es5.js.PreActivation.traverseRoutes (router.es5.js:4343) at router.es5.js:4305 at Array.forEach (<anonymous>) at PreActivation.webpackJsonp.../../../router/@angular/router.es5.js.PreActivation.traverseChildRoutes (router.es5.js:4304) at PreActivation.webpackJsonp.../../../router/@angular/router.es5.js.PreActivation.traverse (router.es5.js:4261) at MapSubscriber.project (router.es5.js:4100) at MapSubscriber.webpackJsonp.../../../../rxjs/operator/map.js.MapSubscriber._next (map.js:77) at MapSubscriber.webpackJsonp.../../../../rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89) at MergeMapSubscriber.webpackJsonp.../../../../rxjs/operator/mergeMap.js.MergeMapSubscriber.notifyNext (mergeMap.js:143) at InnerSubscriber.webpackJsonp.../../../../rxjs/InnerSubscriber.js.InnerSubscriber._next (InnerSubscriber.js:23) at PreActivation.webpackJsonp.../../../router/@angular/router.es5.js.PreActivation.traverseRoutes (router.es5.js:4343) at router.es5.js:4305 at Array.forEach (<anonymous>) at PreActivation.webpackJsonp.../../../router/@angular/router.es5.js.PreActivation.traverseChildRoutes (router.es5.js:4304) at PreActivation.webpackJsonp.../../../router/@angular/router.es5.js.PreActivation.traverse (router.es5.js:4261) at MapSubscriber.project (router.es5.js:4100) at MapSubscriber.webpackJsonp.../../../../rxjs/operator/map.js.MapSubscriber._next (map.js:77) at MapSubscriber.webpackJsonp.../../../../rxjs/Subscriber.js.Subscriber.next (Subscriber.js:89) at MergeMapSubscriber.webpackJsonp.../../../../rxjs/operator/mergeMap.js.MergeMapSubscriber.notifyNext (mergeMap.js:143) at InnerSubscriber.webpackJsonp.../../../../rxjs/InnerSubscriber.js.InnerSubscriber._next (InnerSubscriber.js:23) at resolvePromise (zone.js:783) at resolvePromise (zone.js:754) at zone.js:831 at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:424) at Object.onInvokeTask (core.es5.js:3881) at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invokeTask (zone.js:423) at Zone.webpackJsonp.../../../../zone.js/dist/zone.js.Zone.runTask (zone.js:191) at drainMicroTaskQueue (zone.js:595) at ZoneTask.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneTask.invokeTask [as invoke] (zone.js:502) at invokeTask (zone.js:1370) 解决方法
好.我设法解决了这个问题.我不完全明白,但这是我发现的:
>当路由器插座仅在应用程序HTML中包含一次时,无法读取null disapear的属性“组件”(例如:与在ng-if条件的多个分支中的每个分支中包含router-outlet相反) 这个表格: <div *nfIf="condition"> <router-outlet></router-outlet> </div> <div *nfIf="!condition"> <router-outlet></router-outlet> </div> 这种形式: <div *nfIf="condition;else notcondition"> <router-outlet></router-outlet> </div> <ng-template #notcondition> <router-outlet></router-outlet> </ng-template> 我没有问题从登录页面导航到带参数的登录页面. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |