我有一个多页的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分钟左右
答案 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
解决了此问题。