Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ionic framework TypeError:无法读取属性';canDeactivate';离子5中的空值_Ionic Framework_Lazy Loading_Ionic5_Angular Route Guards_Candeactivate - Fatal编程技术网

Ionic framework TypeError:无法读取属性';canDeactivate';离子5中的空值

Ionic framework TypeError:无法读取属性';canDeactivate';离子5中的空值,ionic-framework,lazy-loading,ionic5,angular-route-guards,candeactivate,Ionic Framework,Lazy Loading,Ionic5,Angular Route Guards,Candeactivate,我无法在Ionic 5中实现canDeactivate guard。下面是我的代码 model.ts export interface isDeactivatable { canDeactivate: () => Observable<boolean> | Promise<boolean> | boolean; } 离开TestPage时出现以下错误。 我曾尝试将LeavePageGuard作为提供者添加到应用程序模块和测试页面模块中,但仍然得到相同的错

我无法在Ionic 5中实现canDeactivate guard。下面是我的代码

model.ts

export interface isDeactivatable {
    canDeactivate: () => Observable<boolean> | Promise<boolean> | boolean;
 }
离开
TestPage
时出现以下错误。 我曾尝试将
LeavePageGuard
作为提供者添加到应用程序模块和测试页面模块中,但仍然得到相同的错误

core.js:6014 ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'canDeactivate' of null
TypeError: Cannot read property 'canDeactivate' of null
    at LeavePageGuard.canDeactivate (leave-page.guard.ts:15)
    at router.js:5543
    at Array.map (<anonymous>)
    at runCanDeactivate (router.js:5532)
    at MergeMapSubscriber.project (router.js:5349)
    at MergeMapSubscriber._tryNext (mergeMap.js:46)
    at MergeMapSubscriber._next (mergeMap.js:36)
    at MergeMapSubscriber.next (Subscriber.js:49)
    at Observable._subscribe (subscribeToArray.js:3)
    at Observable._trySubscribe (Observable.js:42)
    at resolvePromise (zone-evergreen.js:797)
    at resolvePromise (zone-evergreen.js:754)
    at zone-evergreen.js:858
    at ZoneDelegate.invokeTask (zone-evergreen.js:391)
    at Object.onInvokeTask (core.js:39680)
    at ZoneDelegate.invokeTask (zone-evergreen.js:390)
    at Zone.runTask (zone-evergreen.js:168)
    at drainMicroTaskQueue (zone-evergreen.js:559)
    at invokeTask (zone-evergreen.js:469)
    at ZoneTask.invoke (zone-evergreen.js:454)
core.js:6014错误:未捕获(承诺中):TypeError:无法读取null的属性“canDeactivate”
TypeError:无法读取null的属性“canDeactivate”
在LeavePageGuard.canDeactivate(leavepage.guard.ts:15)
路由器:js:5543
在Array.map()处
在runCanDeactivate(router.js:5532)
在MergeMapSubscriber.project(router.js:5349)
在MergeMapSubscriber.\u tryNext(mergeMap.js:46)
在MergeMapSubscriber.\u下一步(mergeMap.js:36)
在MergeMapSubscriber.next(Subscriber.js:49)
在可观察状态下。订阅(subscribeToArray.js:3)
在可观察的情况下。_尝试订阅(Observable.js:42)
at resolvePromise(zone evergreen.js:797)
at evergreen(zone evergreen.js:754)
常青区。js:858
在ZoneDelegate.invokeTask(zone everyver.js:391)
位于Object.onInvokeTask(core.js:39680)
在ZoneDelegate.invokeTask(zone evergreen.js:390)
在Zone.runTask(Zone everyver.js:168)
在drainMicroTaskQueue(zone evergreen.js:559)
在invokeTask(zone evergreen.js:469)
在ZoneTask.invoke(zone everyver.js:454)

解决方案非常简单,我找到了。问题在于延迟加载。大多数解决方案都不是针对延迟加载问题给出的

我将canDeativate防护从应用程序路由移动到该特定页面的模块路由。工作得很有魅力

test-rouring.module.ts

const routes: Routes = [
  {
    path: '',
    component: TestPage
    canDeactivate: [ LeavePageGuard ]
  }
const routes: Routes = [
  {
    path: '',
    component: HomePage,
    children:[
      {
        path: 'test',
        loadChildren: () => import('../pages/test/test.module').then( m => m.TestPageModule),
        canDeactivate: [LeavePageGuard]
      }
]
}
]
core.js:6014 ERROR Error: Uncaught (in promise): TypeError: Cannot read property 'canDeactivate' of null
TypeError: Cannot read property 'canDeactivate' of null
    at LeavePageGuard.canDeactivate (leave-page.guard.ts:15)
    at router.js:5543
    at Array.map (<anonymous>)
    at runCanDeactivate (router.js:5532)
    at MergeMapSubscriber.project (router.js:5349)
    at MergeMapSubscriber._tryNext (mergeMap.js:46)
    at MergeMapSubscriber._next (mergeMap.js:36)
    at MergeMapSubscriber.next (Subscriber.js:49)
    at Observable._subscribe (subscribeToArray.js:3)
    at Observable._trySubscribe (Observable.js:42)
    at resolvePromise (zone-evergreen.js:797)
    at resolvePromise (zone-evergreen.js:754)
    at zone-evergreen.js:858
    at ZoneDelegate.invokeTask (zone-evergreen.js:391)
    at Object.onInvokeTask (core.js:39680)
    at ZoneDelegate.invokeTask (zone-evergreen.js:390)
    at Zone.runTask (zone-evergreen.js:168)
    at drainMicroTaskQueue (zone-evergreen.js:559)
    at invokeTask (zone-evergreen.js:469)
    at ZoneTask.invoke (zone-evergreen.js:454)
const routes: Routes = [
  {
    path: '',
    component: TestPage
    canDeactivate: [ LeavePageGuard ]
  }