簡體   English   中英

Angular2路由器可以激活任何提供程序false

[英]Angular2 router canActivate no provider for false

所以我的代碼看起來像這樣:

export const routes: RouterConfig = [
  { 'path': '', redirectTo: '/jobs', terminal: true, canActivate: [tokenNotExpired()]  },
  { path: 'account', component: AccountComponent, canActivate: [!tokenNotExpired()] },
  { path: 'login', component: LoginComponent },
  ...WihRoutes
];

每當我嘗試導航到“帳戶”時,路由都會失敗,但由於某種原因,它還會出現以下控制台錯誤:

browser_adapter.ts:82 EXCEPTION:錯誤:未捕獲(在承諾中):沒有提供者為false!BrowserDomAdapter.logError @ browser_adapter.ts:82BrowserDomAdapter.logGroup @ browser_adapter.ts:93ExceptionHandler.call @ exception_handler.ts:58(匿名函數)@ application_ref.ts:374schedulerFn @async.ts:148SafeSubscriber .__ tryOrUnsub @ Subscriber.ts:240SafeSubscriber.next @ Subscriber.ts:192Subscriber._next @ Subscriber.ts:133Subscriber.next @ Subscriber.ts:93Subject._finalNext @ Subject.ts: 154Subject._next @ Subject.ts:144Subject.next @ Subject.ts:90EventEmitter.emit @ async.ts:133onError @ ng_zone.ts:141onHandleError @ ng_zone_impl.ts:95ZoneDelegate.handleError @ zone.js:327Zone.runGuarded @ zone。 js:233_loop_1 @ zone.js:487drainMicroTaskQueue @ zone.js:494ZoneTask.invoke @ zone.js:426 browser_adapter.ts:82 STACKTRACE:BrowserDomAdapter.logError @ browser_adapter.ts:82ExceptionHandler.call @ exception_handler.ts:61(匿名函數)@ application_ref.ts:374schedulerFn @async.ts:148SafeSu bscriber .__ tryOrUnsub @ Subscriber.ts:240SafeSubscriber.next @ Subscriber.ts:192Subscriber._next @ Subscriber.ts:133Subscriber.next @ Subscriber.ts:93Subject._finalNext @ Subject.ts:154Subject._next @ Subject.ts:144Subject。 next @ Subject.ts:90EventEmitter.emit @ async.ts:133onError @ ng_zone.ts:142onHandleError @ ng_zone_impl.ts:95ZoneDelegate.handleError @ zone.js:327Zone.runGuarded @ zone.js:233_loop_1 @ zone.js:487drainMicroTaskQueue @ zone.js:494ZoneTask.invoke @ zone.js:426 browser_adapter.ts:82錯誤:未捕獲(承諾):沒有提供者為假! 在zone.js上的resolvePromise(zone.js:538):在ZoneDelegate.invoke(zone.js:323)的515處,在區域的ZoneDelegate.invoke(zone.js:322)處的Object.onInvoke(ng_zone_impl.ts:72)處zone.le上的.run(zone.js:216)位於ZoneDelegate.invokeTask(zone.js:355)的Zone.leInvokeTask(zone.js:356)中的ZoneDelegate.invokeTask(zone.js:356)處。

也是錯誤的圖片因為格式很糟糕。 堆棧跟蹤

我不清楚為什么會這樣 - 其他人?

傳遞給canActivate: [!tokenNotExpired()]的值canActivate: [!tokenNotExpired()]需要是提供者。 !tokenNotExpired()不是有效的提供者。

canActivate: ['tokenExpired']
canActivate: ['!tokenExpired']

並在bootstrap或APP_ROUTER_PROVIDERS

bootstrap(AppComponent, [
  {provide: 'tokenExpired', useValue: (a: any, b: any) => tokenExpired()}
  {provide: '!tokenExpired', useValue: (a: any, b: any) => !tokenExpired()}
]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM