2016-11-10 104 views
7

由于一些性能问题,我正在尝试升级angularJS2/phonegap应用以在iOS上使用WKWebView。Angular 2.0路由器导航无法在iOS上工作WKWebView

不幸的是,任何路由导航呼叫都不起作用。这包括拨打routerlinkthis.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的应用程序,所以大部分引用都使用(我假设)file:protocol。但是,第一页加载没问题,并且它引用了单个JavaScript文件中的内容。奇怪的是,所有其他路由器引用的内容也都在同一个JavaScript文件中。

我希望有人能够理解路由器行为的细节,以解释为什么它在这种环境下无法正常工作。

+0

请给我看你的代码。 –

+0

如果您使用的子路由比您需要导入RouterModule。并请添加一些代码,以便我们可以帮助您。 –

+0

我已经添加了一些代码,但重点是它在UIWebView中正常工作,但在WKWebView中失败。 –

回答

1

你是通过网络服务器还是file://协议访问它?看来wkwebview有问题。

See this article

+0

感谢您的信息。我添加了一些更详细的问题.... –

+0

@Mike如果你看看它提到的文章科尔多瓦加载索引页,然后没有任何反应 “加载索引页 苹果在iOS 9中修复了一个问题,你不能无法在WKWebView中加载HTML文档,这是科尔多瓦能够在iOS 9中为WKWebView添加官方支持的主要原因。因此,您的索引页面出现在WKWebView中,那么......没有其他的工作。 “WKWebView:它似乎将本地文件视为来自远程服务器,即使它们在应用程序本身中,并且此类请求被阻止。” 由于PhoneGap是科尔多瓦尝试安装本地服务器。 – PersyJack

+0

我没看过这篇文章,而且我对这个问题很熟悉。但是,它不应该适用,因为所有.js都在一个文件中,并且该文件已经加载。我希望有人在那里有一些路由器行为的内部知识,并可以解释发生了什么..我很欣赏帮助,虽然... –