2017-02-21 15 views
1

Я пытаюсь реализовать навигацию в Ionic 2. Я попытался с DeepLinking, и я получил результат, но знак «#» отправляется по URL-адресу. Когда знак «#» появится в URL-адресе, Google Analytics не узнает веб-сайт, поэтому я попытался реализовать навигацию по-разному, например, для Angular 2 Routing, которая поддерживает как стиль HTML5, так и хэш-стиль, но не может реализовать in Ionic 2.Как преодолеть «#», входя в URL через DeepLinking в Ionic 2?

Ex- http://localhost:8100/#/registration - Этот рабочий отлично работает, но я хочу без «#». Как http://localhost:8100/registration

Спасибо за помощь

ответ

1

Try использовать pathLocationStrategy вместо HashLocationStrategy.

Добавить это в app.module.ts

import { LocationStrategy, 
     PathLocationStrategy } from '@angular/common'; 

... 

@NgModule({ 
... 
providers: [ 
{ 
    provide: LocationStrategy, 
    useClass: PathLocationStrategy 
}, 
... 

Или другой путь

IonicModule.forRoot(MyApp, { 
     locationStrategy: 'path' 
    }) 

И убедитесь, чтобы иметь действительную базу HREF.

+0

Я пытался в обоих, но не работает, дайте Runtime error- \t @NgModule ({ \t \t импорт: [IonicModule.forRoot (MyApp, {locationStrategy: 'путь'}, { \t \t ссылки: [ \t \t \t {компонент: RegistrationComponent, имя: 'регистрация', сегмент: 'регистрация'} \t \t] \t \t})], \t \t провайдеры: [...] \t}) \t @NgModule ({ \t \t импорта: [IonicModule.forRoot (MyApp, {}, { \t \t ссылки: [{компонент: RegistrationComponent, название: 'Регистрация', сегмент: 'регистрация'},] \t \t})], \t \t провайдеры: [{обеспечивают: LocationStrategy , useClass: PathLocationStrategy}, ...] \t}) –

+0

Привет, мне нужно также передать параметр, например 'http: // localhost: 8100/feedback/767', как я могу это сделать? –

+0

Этот метод не работает для меня –

0

Итак, вот список вещей, которые я сделал. Надеюсь это поможет.

  1. Нам нужно удалить # по пути каждого URL-адреса, поскольку Google Analytics отклоняет URL-адреса с # в них. В App модуле, добавьте {locationStrategy: 'путь'} для вашего модуля App следующим образом:

    IonicModule.forRoot(MyApp, { 
        locationStrategy: 'path' 
    }) 
    

2 .Теперь # удаляется из URL. Но когда вы обновляете или напрямую обращаетесь к URL-адресу, это не работает, потому что это ожидаемое поведение для любого SPA. Когда вы обновляете страницу, сервер пытается найти страницу в указанном месте. Как указано в @Parth Ghiya выше. Например, если вы нажмете localhost/abc, тогда сервер попытается найти abc/index.html, который на самом деле не существует. Чтобы решить эту проблему, вы написали конфигурации на моем сервере, то есть на каждом запросите index.html. Я использую узел Express Server для развертывания приложения. Используйте следующий код для маршрутизации каждый запрос на index.html -

var express = require('express'); 
var path = require('path') 
var app = express(); 
app.use(express.static(path.resolve(__dirname, "www"))); 

app.use('/*', function(req, res){ 
    res.sendFile(__dirname+ '/www' + '/index.html'); 
}); 

app.set('port', process.env.PORT || 3000); 
app.listen(app.get('port'), function() { 
    console.log("listening to Port", app.get("port")); 
});