TypeError:未定义不是对象(正在评估“ parentOutlet.peekState”)

时间:2018-12-26 18:07:20

标签: angular angular2-routing angular2-nativescript

我有一个多页的angular-Nativescript应用程序(带有侧边抽屉和一个页面路由器出口)。当我第一次启动该应用程序时,我可以在侧边抽屉上的页面之间导航,但是几分钟(例如10分钟)之后,尝试从一个页面导航到另一个页面时,此消息使应用程序崩溃:

  

JavaScript错误:
  file:///app/tns_modules/nativescript-angular/zone-js/dist/zone-nativescript.js:826:78:
JS错误错误:未捕获(承诺):TypeError:未定义不是对象(评估“ parentOutlet.peekState”)
  upsertModalOutlet @ file:///app/tns_modules/nativescript-angular/router/ns-location-strategy.js:506:41
  文件:///app/tns_modules/nativescript-angular/router/ns-location-strategy.js:128:44
  forEach @ [本地代码]
  pushStateInternal @ file:///app/tns_modules/nativescript-angular/router/ns-location-strategy.js:111:54
  pushState @ file:///app/tns_modules/nativescript-angular/router/ns-location-strategy.js:85:31
  pushState @ file:///app/tns_modules/nativescript-angular/router/ns-platform-location.js:49:40
  pushState @ file:///app/tns_modules/@angular/common/bundles/common.umd.js:511:45
  go @ file:///app/tns_modules/@angular/common/bundles/common.umd.js:286:45
  setBrowserUrl @ file:///app/tns_modules/@angular/router/bundles/router.umd.js:4007:33
  文件:///app/tns_modules/@angular/router/bundles/router.umd.js:3960:40
  文件:/// app / tns_m <\ M-b \ M ^ @ \ M-&>
   * JavaScript调用堆栈:
  (
  0 UIApplicationMain @ [本地代码]
  1个start @ file:///app/tns_modules/tns-core-modules/application/application.js:272:26
  2 run @ file:///app/tns_modules/tns-core-modules/application/application.js:300:10
  3 bootstrapNativeScriptApp @ file:///app/tns_modules/nativescript-angular/platform-common.js:185:26
  4 bootstrapApp @ file:///app/tns_modules/nativescript-angular/platform-common.js:103:38
  5 bootstrapModule @ file:///app/tns_modules/nativescript-angular/platform-common.js:87:26
  6匿名@file:///app/main.js:7:57
  7评价@ [本地代码]
  8 moduleEvaluation @:1:11
  9 promiseReactionJob @:1:11
  )
  *
由于未捕获的异常'NativeScript遇到致命错误而终止应用程序:错误:未捕获(承诺中):TypeError:未定义不是对象(正在评估'parentOutlet.peekState')
  upsertModalOutlet @ file:///app/tns_modules/nativescript-angular/router/ns-location-strategy.js:506:41
  文件:///app/tns_modules/nativescript-angular/router/ns-location-strategy.js:128:44
  forEach @ [本地代码]
  pushStateInternal @ file:///app/tns_modules/nativescript-angular/router/ns-location-strategy.js:111:54
  pushState @ file:///app/tns_modules/nativescript-angular/router/ns-location-strategy.js:85:31
  pushState @ file:///app/tns_modules/nativescript-angular/router/ns-platform-location.js:49:40
  pushState @ file:///app/tns_modules/@angular/common/bundles/common.umd.js:511:45
  go @ file:///app/tns_modules/@angular/common/bundles/common.umd.js:286:45   setBrowserUrl @ file:///app/tns_modules/@angular/router/bundles/router.umd.js:4007:33
  文件:///app/tns_modules/@angular/router/bundles/router.umd.js:3960:40

它的再现性非常可靠,但每次我都必须等待10分钟左右

2 个答案:

答案 0 :(得分:0)

问题似乎与我处理角度版本之间的路由有关。在角度4中,我使用的是<router-outlet>,并且在tkMainContent中有<StackLayout>。当我切换到在角度6中使用<page-router-outlet>时,我需要将tkMainContent移动到<page-router-outlet>

内部

答案 1 :(得分:0)

我有同样的错误,我发现这是由于我在main.ts文件中使用了此错误引起的:

platformNativeScriptDynamic({createFrameOnBootstrap: true}).bootstrapModule(AppModule);

更改为:

platformNativeScriptDynamic({createFrameOnBootstrap: false}).bootstrapModule(AppModule);

platformNativeScriptDynamic().bootstrapModule(AppModule);

解决了问题。

在尝试加载使用根视图显示模态的模态时,尤其会出现此错误。

根据NativeScript文档,如果您的应用程序不使用createFrameOnBootstrap,则应使用page-router-outlet,因为没有它,您将不会获得默认的Page和{{1} },这意味着您将无法将它们注入组件或显示Frame

我的应用程序有ActionBar,因此设置page-router-outlet解决了此问题。