Ионная версия: (отметьте один с "x")
[] 1.x (Для проблем с Ionic 1.x используйте https://github.com/ionic-team/ionic-v1)
[] 2.x
[x] 3.x
Я отправляю ... (отметьте "x")
[x] отчет об ошибке
[] запрос функции
[] запрос поддержки => Пожалуйста, не отправляйте запросы на поддержку здесь, используйте один из этих каналов: https://forum.ionicframework.com/ или http://ionicworldwide.herokuapp.com/
Текущее поведение:
Ionic 3.5.0 странное поведение URL-адресов
В моем приложении есть базовые интерфейсы! LoginPage, RegistrationPage ... что после входа в систему или регистрации он переходит в интерфейс вкладок ... я думаю, ничего особенного!
Прежде всего "nav / n4" - это поведение по умолчанию?
http: // localhost : 8100 / # / nav / n4 / логин
http: // локальный : 8100 / # / nav / n4 / app / tabs / t0 / perfil / perfil
Я создал страницы и вкладки с помощью ionic g
и для всех страниц у меня есть сегмент, установленный для их, скажем так, имен, таких как:
@IonicPage ({сегмент: 'perfil'})
Ожидаемое поведение:
http: // localhost : 8100 / # / логин
http: // локальный : 8100 / # / приложение / перфил
Действия по воспроизведению:
Связанный код:
login.module.ts
import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import {SharedModule} from '../../shared/shared.module';
import { LoginPage } from './login';
@NgModule({
declarations: [
LoginPage,
],
imports: [
IonicPageModule.forChild(LoginPage),
SharedModule
],
exports: [
LoginPage
]
})
export class LoginPageModule {}
login.ts
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams, MenuController, LoadingController, AlertController, Events } from 'ionic-angular';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { ControlValidator } from '../../validators/control-validator';
import { Config } from '../../config/config';
import { Storage } from '@ionic/storage';
import {UserProvider} from '../../providers/user/user.provider';
import {SocialProvider} from '../../providers/social/social.provider';
@IonicPage({
segment:'login'
})
@Component({
selector: 'page-login',
templateUrl: 'login.html',
})
export class LoginPage {
user:any = {};
form:FormGroup;
submitted:boolean = false;
private loader:any;
private alert:any;
constructor(
public navCtrl: NavController,
public menuCtrl:MenuController,
public loaderCtrl:LoadingController,
public alertCtrl:AlertController,
public events:Events,
public formBuilder:FormBuilder,
public storage:Storage,
public userService:UserProvider,
public socialService:SocialProvider,
public config:Config) {
this.user = {
email:'',
password:''
}
this.form = formBuilder.group({
email:[this.user.email, Validators.compose([ControlValidator.isEmailValid])],
password:[this.user.password, Validators.compose([Validators.required, Validators.minLength(5)])]
});
}
ionViewDidLoad() {
this.menuCtrl.enable(false);
}
showLoading(){
this.loader = this.loaderCtrl.create({
content: 'Verificando as suas credenciais...'
});
this.loader.present();
}
showAlert(subtitle:string){
this.alert = this.alertCtrl.create({
title: 'LOGIN',
subTitle:subtitle,
buttons:['OK'],
cssClass:'alert-login'
});
this.alert.present();
}
openPage(page:string){
this.navCtrl.push(page);
}
private onError(err:string){
this.showAlert(err);
}
login(){
this.submitted = true;
if(!this.form.valid){
return;
}
this.showLoading();
this.user = this.form.value;
this.userService.login(this.user)
.then(res=>{
if(res) {
this.loader.dismiss()
.then(()=>{
setTimeout(()=>{
this.navCtrl.setRoot('TabsPage');
});
});
}else{
}
})
.catch(this.onError);
}
}
tabs.module.ts
import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { TabsPage } from './tabs';
@NgModule({
declarations: [
TabsPage
],
imports: [
IonicPageModule.forChild(TabsPage),
]
})
export class TabsPageModule {}
tabs.ts
import { Component } from '@angular/core';
import { IonicPage, NavController } from 'ionic-angular';
@Component({
selector: 'page-tabs',
templateUrl: 'tabs.html'
})
@IonicPage({
segment:'app'
})
export class TabsPage {
perfilRoot = 'PerfilPage';
agendaRoot = 'AgendaPage';
newsRoot = 'NewsPage';
ticketsRoot = 'TicketsPage';
myFestivalRoot = 'MyFestivalPage';
constructor(public navCtrl: NavController) {}
}
perfil.module.ts
import { NgModule } from '@angular/core';
import { IonicPageModule } from 'ionic-angular';
import { PerfilPage } from './perfil';
@NgModule({
declarations: [
PerfilPage,
],
imports: [
IonicPageModule.forChild(PerfilPage),
],
exports: [
PerfilPage
]
})
export class PerfilPageModule {}
perfil.ts
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
@IonicPage({
segment:'perfil'
})
@Component({
selector: 'page-perfil',
templateUrl: 'perfil.html',
})
export class PerfilPage {
constructor(public navCtrl: NavController, public navParams: NavParams) {
}
ionViewDidLoad() {
console.log('ionViewDidLoad PerfilPage');
}
}
Дополнительная информация:
Ионная информация: (запустите ionic info
из приглашения терминала / cmd и вставьте вывод ниже):
global packages:
@ionic/cli-utils : 1.4.0
Ionic CLI : 3.4.0
local packages:
@ionic/app-scripts : 1.3.12
@ionic/cli-plugin-ionic-angular : 1.3.2
Ionic Framework : ionic-angular 3.5.0
System:
Node : v6.5.0
OS : OS X El Capitan
Xcode : Xcode 8.1 Build version 8B62
ios-deploy : 1.9.1
ios-sim : 5.0.13
npm : 3.10.3
Команда знает об этом.
Последнее, что я проверял, это было более низким приоритетом, чем другие вещи.
Я надеюсь, что это тоже скоро будет рассмотрено.
@AmitMY спасибо за ответ !!
да, я тоже на это надеюсь !! диплинкинг будет проблемой из-за такого поведения, не так ли?
Есть ли какой-нибудь обходной путь, о котором вы знаете?
Я думаю, что это проблематично, и я не знаю, существует ли какое-либо обходное решение.
Я собираюсь начать работать над этим сегодня.
Спасибо,
Дэн
большое спасибо @danbucholtz
ваше здоровье
@tattivitorino, спасибо, вы уже спрашивали об этом, я только что опубликовал то же самое на форуме https://forum.ionicframework.com/t/url-not-reset-on-ionic-serve-live-reload/98080
Любой процесс для этого?
Это исправлено в последнем обновлении,
@rashnk
Я обновил "npm install
Это все еще " http: // localhost : 8100 / # / nav / n4 / start";
следуйте этому http://blog.ionic.io/announcing-ionic-3-5-2/
У нас была такая же проблема с / nav / n4 /
rashnk - вы говорите, что это точно исправлено в 3.5.2?
Это не было напрямую рассмотрено в сообщении блога по адресу: http://blog.ionic.io/announcing-ionic-3-5-2/.
Есть ли список исправлений, которые мы можем проверить на предмет подобных вещей в будущем?
Спасибо :)
@ dev-manager-uk Да, см. это: https://github.com/ionic-team/ionic/releases
Отлично, спасибо.
Есть ли что-то, что нам нужно изменить в настройках или коде? Или это должно просто работать ™.
: D
Для меня проблема все еще присутствует как в 3.5.2, так и в 3.5.3.
ионная информация
глобальные пакеты:
@ionic/cli-utils : 1.5.0
Ionic CLI : 3.5.0
локальные пакеты:
@ionic/app-scripts : 2.0.2
@ionic/cli-plugin-ionic-angular : 1.3.2
Ionic Framework : ionic-angular 3.5.3
Система:
Node : v8.0.0
OS : macOS Sierra
Xcode : Xcode 8.3.3 Build version 8E3004b
ios-deploy : 1.9.0
ios-sim : 5.0.9
npm : 5.3.0
@rashnk , я успешно
да. я был неправ. URL-адрес все еще имеет дополнительное содержимое, но я работал над хромом с помощью ionic serve -l
вроде не проблема, проверьте скриншоты
Да, проблема заключается в непредвиденном URL.
Ожидаемое поведение:
http: // localhost : 8100 / # / логин
http: // локальный : 8100 / # / приложение / перфил
@danbucholtz Мы ждем вашего ответа, поэтому у меня тоже есть тот же шаблон URL, что и выше, с последней версией Ionic 3.5.3
Здесь та же проблема. После обновления до 3.5 мое приложение, использующее deeplinking (приложение браузера, размещенное на сервере), больше не работало должным образом из-за волшебных URL-адресов, таких как 'nav / n4'.
Похоже, ionic3.5 изменил шаблон навигации, но я надеюсь, что скоро будет подробная документация.
В любом случае, спасибо за тяжелую работу ionic-team.
Здесь та же проблема. Мы работаем над приложением PWA, и диплинкинг очень важен.
То же самое. Это задержка для нас.
@ larpo1 Я предлагаю вам
Всем здравствуйте! Дэн в настоящее время работает над сокращением наших URL-адресов и избавлением от большого количества "магии" в них. Мы надеемся, что это скоро будет готово.
Спасибо, Дэн! Спасибо, Джастин!
В основном они должны работать как веб-адреса.
Они должны работать так:
https://www.test.com/about
Вместо того:
https://www.test.com/#/nav/n4/about
или даже:
https://www.test.com/#/about
То же самое.
@ dev-manager-uk Что касается https://www.test.com/#/ , это уже другая тема.
Вы удаляете его, изменяя locationStrategy
в модуле приложения:
@NgModule({
imports: [
BrowserModule,
IonicModule.forRoot(AppComponent, {
locationStrategy: "path", // <--- here
}),
...
]
})
Спасибо @sergiocarneiro
Я попробую!
Привет @ jgw96
Есть ли у вас пример релиза по исправлению диплинкинга?
Спасибо :-)
Чтобы замаскировать эту проблему, мне пришлось перейти на более раннюю версию:
"npm install [email protected] --save --save-точный"
Это будет опубликовано завтра. Коммиты уже находятся на Github, поэтому я собираюсь закрыть это.
Спасибо,
Дэн
Да, было бы неплохо исправить
Я не уверен, что здесь нет проблем, но вы, ребята, должны использовать ночную программу 3.5.3-201707251952
, в которой есть это исправление. И если с ним возникнут проблемы, опубликуйте вопрос до выпуска 3.6.
Могу подтвердить, что $ npm install [email protected] --save --save-exact
работает для меня. Спасибо!
Изменить: использовать 3.6.0
Извините, у нас возникла непредвиденная проблема, мы отправим товар завтра. Если вам нужен ранний доступ, обратите внимание на npm install ionic-angular@nightly
. Если вы используете вкладки и видите, что при обновлении что-то ломается, это известное ограничение нашей системы, которое будет исправлено в Ionic 4 с небольшим изменением API. А пока вы можете использовать tabUrlPath
на ion-tab
чтобы смягчить его. По сути, если у вас есть deeplink segment
и tab
с одинаковыми name/title
, здесь потенциально может быть сговор. Кроме этого, пока все работает отлично.
Спасибо,
Дэн
@sergiocarneiro К сожалению, добавление этого параметра не приведет к удалению nav/n4
и вы не сможете напрямую перейти к этому URL-адресу.
Могу подтвердить, что $ npm install [email protected] --save --save-exact работает для меня. Спасибо!
@numerized Вместо этого вы можете использовать 3.6.0.
Привет,
Я использую ionic cli v3.9.2, и у меня все еще есть nav / n4 в строке URL.
На самом деле у меня даже есть
/ # / nav / n4 / pu / loginpage / nav / n5 / pr / privatepage
Поскольку у меня есть общедоступный и частный навигатор ...
Я прошёл 3.6.0, поэтому не знаю, в чем проблема, за исключением того, что она вызывает серьезные проблемы.
Вам нужно использовать 3.6.0 ionic angular.
Спасибо, AmitMY, к сожалению, мне это не помогает ...
Что еще я мог сделать?
То же самое здесь, я на [email protected] и всегда
Помимо обновления ionic и ionic-angular до последней версии, @danbucholtz есть ли что-то еще, что нужно сделать?
Для меня это работает с использованием последних
Итак, если я запустил ionc-angular 3.6.1 и сделаю:
@NgModule({
imports: [
BrowserModule,
IonicModule.forRoot(AppComponent, {
locationStrategy: "path", // <--- here
}),
...
]
})
Меня устраивает
Всем привет! Кажется, с тех пор, как я создал эту проблему, многое произошло и изменилось! Я вижу, что часть проблем с URL, которые у нас были до этого, исправлены! Для страниц, которые не находятся внутри системы вкладок, все работает нормально! но это не относится к вкладкам.
Я только что создал новое приложение с парой страниц, таких как логин, регистрация и т. Д., И URL-адрес идеально подходит для них!
http: // localhost : 8100 / # / логин
http: // localhost : 8100 / # / регистрация
Когда я перехожу на страницу вкладок (при входе в систему), это то, что у меня есть:
http: // локальный : 8100 / # / tabs / tab1 / tab1
здесь я не настраивал сегмент на IonicPage или tabUrlPath на ионной вкладке
http: // локальный : 8100 / # / tabs / tab-1 / tab1
здесь я настраиваю tabUrlPath на ионной вкладке (
http: // локальный : 8100 / # / вкладки / вкладка-1 / вкладка-1
здесь я настраиваю оба
@IonicPage ({
сегмент: 'tab-1'
})
мне кажется, что tabUrlPath связан с первым сегментом / tab-1, а сегмент IonicPage - это второй сегмент!
Есть ли способ избавиться от любого из них? Я не вижу смысла иметь оба сегмента! Идеально было бы: http: // localhost : 8100 / # / tabs / tab-1, верно?
это моя системная информация:
`
пакеты cli: (/ ionicv2 / appv3 / app / node_modules)
@ionic/cli-utils : 1.12.0
ionic (Ionic CLI) : 3.12.0
глобальные пакеты:
cordova (Cordova CLI) : 7.0.1
локальные пакеты:
@ionic/app-scripts : 2.1.4
Cordova Platforms : none
Ionic Framework : ionic-angular 3.6.1
Система:
Android SDK Tools : 25.2.5
ios-deploy : 1.9.1
ios-sim : 5.0.13
Node : v6.5.0
npm : 3.10.3
OS : OS X El Capitan
Xcode : Xcode 8.1 Build version 8B62
`
Определенно проблема для меня с Ionic 3.9.2. Я также использую вкладки, как и другие. При необходимости предоставлю дополнительную информацию.
Я получаю URL-адрес, который выглядит следующим образом: http://localhost:8100/create/nav/n9/create
.
Я полностью согласен с @tattivitorino, что на самом деле нет необходимости
Еще я заметил, что я не могу получить URL-адреса с параметрами, работающими при использовании вкладок.
Это не работает:
http://127.0.0.1 : 8100 / # / tabs / docs / documents / 063b38ae-8edd-408b-b7fc-a346b1c16a8b
Пока это делает:
http://127.0.0.1 : 8100 / # / documents / 063b38ae-8edd-408b-b7fc-a346b1c16a8b
Страница, которую я хочу получить, имеет следующее определение сегмента:
segment: "documents/:documentId"
Только что сделал обновление с момента моего предыдущего комментария, используя 3.9.2, и он показывает / nav / n4 /. Есть ли какие-либо обновления для удаления этого или мне следует перейти на версию 3.6.0?
РЕДАКТИРОВАТЬ: проигнорируйте это, похоже, что это была больше проблема с моим package-lock.json в npm, принудительная установка из моего package.json с помощью npm install --no-shrinkwrap
похоже, сделала трюк и правильно установила 3.9.2
Я использую 3.9.2. Проблема сохраняется.
Имея эту проблему также на 3.9.2.
например: / nav / n5 / MasterLogin
У меня это работало нормально, а затем я начал создавать / nav / path .., используя также 3.9.2!
Я обнаружил, что проблема заключалась в том, что у меня было более одного / switch ion-nav
на главной странице (пытался показать панель с разделением ионов или без нее)
@mariohmol Это решило проблему для меня. Спасибо, что включили это.
Спасибо за вопрос! Эта проблема заблокирована, чтобы предотвратить комментарии, не относящиеся к исходной проблеме. Если это все еще проблема с последней версией Ionic, создайте новую проблему и убедитесь, что шаблон полностью заполнен.
Самый полезный комментарий
Я собираюсь начать работать над этим сегодня.
Спасибо,
Дэн