2016-11-10 3 views
7

Aufgrund einiger Leistungsprobleme versuche ich eine angularJS2/Phonegap-App zu aktualisieren, um WKWebView auf iOS zu verwenden.Angular 2.0 Router-Navigation funktioniert nicht auf iOS WKWebView

Leider funktionieren alle Anrufe zum Routen navigieren nicht. Dazu gehören routerlink und this.route.navigate Anrufe. Es werden keine Fehler ausgelöst. Hat jemand anderes dies gesehen und/oder vielleicht einen Workaround?

Der Code funktioniert gut mit dem normalen UIWebView.

Ich bin ein relativer Neuling zu Angular, so dass alle Vorschläge willkommen sind.

Hier ist, was einige der entsprechenden Code wie folgt aussieht:

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); 
    } 
} 

Routing-Modul:

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 { } 

Als Reaktion auf einen Kommentar unten:

Wie bereits erwähnt, ist dies eine phonegap App, so verwenden die meisten Referenzen (ich nehme an) die Datei: Protokoll. Die erste Seite wird jedoch ordnungsgemäß geladen und verweist auf den Inhalt einer einzelnen JavaScript-Datei. Die seltsame Sache ist, dass alle anderen Router-referenzierten Inhalte auch in der gleichen JavaScript-Datei sind.

Ich hatte gehofft, dass jemand die Schrauben und Muttern des Routerverhaltens verstehen würde, um zu erklären, warum es in dieser Umgebung nicht funktioniert.

+0

Bitte zeigen Sie mir Sie Code. –

+0

Wenn Sie untergeordnete Routen verwenden, müssen Sie RouterModule importieren. und fügen Sie bitte Code hinzu, damit wir Ihnen helfen können. –

+0

Ich habe etwas Code hinzugefügt, aber der Punkt ist, dass es in UIWebView gut funktioniert, aber in WKWebView fehlschlägt. –

Antwort

1

Zugriff auf diese über einen Webserver oder Datei: // Protokoll? Es scheint, dass wkwebview Probleme damit hat.

See this article

+0

danke für die Info. Ich fügte etwas mehr Detail der Frage hinzu .... –

+0

@Mike, wenn Sie den Artikel betrachten es erwähnt Cordova lädt die Indexseite dann passiert nichts "Laden der Indexseite Apple in iOS 9 behoben ein Problem, wo Sie könnten Lade kein HTML-Dokument in WKWebView. Dies ist der Hauptgrund, warum Cordova in der Lage war, offizielle Unterstützung für WKWebView in iOS 9 hinzuzufügen. Also erscheint Ihre Indexseite im WKWebView, dann ... nichts anderes funktioniert. " "WKWebView: es scheint lokale Dateien zu behandeln, als ob sie von einem Remote-Server stammen, obwohl sie in der App selbst sind, und solche Anfragen sind blockiert." Da PhoneGap Cordova ist, versuchen Sie einen lokalen Server zu installieren. – PersyJack

+0

Ich habe den Artikel gelesen und kenne mich mit dem Problem aus. Es sollte jedoch nicht gelten, da sich alle .js in einer Datei befinden und diese Datei bereits geladen ist. Ich hatte gehofft, dass jemand da draußen etwas über das Verhalten des Routers weiß und erklären könnte, was passiert. Ich schätze die Hilfe allerdings ... –

Verwandte Themen