【发布时间】:2016-11-10 23:00:51
【问题描述】:
由于一些性能问题,我正在尝试升级 angularJS2/phonegap 应用以在 iOS 上使用 WKWebView。
很遗憾,任何路由导航调用都不起作用。这包括routerlink 和this.route.navigate 调用。没有抛出错误。有没有其他人看到过这个和/或可能有解决方法?
代码使用普通的 UIWebView 可以正常工作。
我是 Angular 的新手,欢迎提出任何建议。
下面是一些相关代码的样子:
import { Component } from "@angular/core";
import { Routes, Router, ActivatedRoute } from "@angular/router";
import { LoggedInCallback } from "./service/cognito.service";
export class HomeComponent implements LoggedInCallback {
constructor(public router:Router){
}
isLoggedIn(message:string, isLoggedIn:boolean) {
if (isLoggedIn){
this.router.navigate(['/home/cl']);
}
else {
console.log('HomeComponent: '+message);
}
}
路由模块:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { CategoryListComponent } from './categorylist/categorylist.component';
const approutes: Routes = [
{
path: 'home/cl',
component: CategoryListComponent
},
...
];
@NgModule({
declarations: [
],
imports: [RouterModule.forRoot(approutes),
BrowserModule,
FormsModule],
exports: [RouterModule]
})
export class AppRoutingModule { }
回应以下评论:
如前所述,这是一个 phonegap 应用程序,因此大多数参考文献都使用(我假设)文件:协议。但是,第一个页面可以正常加载,并且它引用了单个 JavaScript 文件中的内容。奇怪的是,所有其他路由器引用的内容也在同一个 JavaScript 文件中。
我希望有人能理解路由器行为的具体细节,以解释为什么它在这种环境中不起作用。
【问题讨论】:
-
请给我看你的代码。
-
如果您使用子路由,则需要导入 RouterModule。请添加一些代码,以便我们为您提供帮助。
-
我已经添加了一些代码,但关键是它在 UIWebView 中运行良好,但在 WKWebView 中失败。
-
对于那些使用cordova + reactjs(或angular)的人,请查看cordova-plugin-wkwebview-engine和cordova-plugin-wkwebviewxhrfix
-
我在 2020 年,你有想过吗?
标签: angular cordova angular-ui-router wkwebview