Version ionique : (cocher une avec "x")
[ ] 1.x (Pour les problèmes Ionic 1.x, veuillez utiliser https://github.com/ionic-team/ionic-v1)
[ ] 2.x
[x ] 3.x
Je soumets un ... (cochez un avec "x")
[x ] rapport de bogue
[ ] demande de fonctionnalité
[ ] demande d'assistance => Veuillez ne pas soumettre de demandes d'assistance ici, utilisez l'un de ces canaux : https://forum.ionicframework.com/ ou http://ionicworldwide.herokuapp.com/
Comportement actuel :
Ionic 3.5.0 comportement étrange des URL
Mon application a les interfaces de base ! Une page de connexion, une page d'inscription... qui, après la connexion ou l'inscription, accède à l'interface des onglets... rien d'extraordinaire, je suppose !
Tout d'abord, le "nav/n4" est-il le comportement par défaut ?
http://localhost :8100/#/nav/n4/login
http://localhost :8100/#/nav/n4/app/tabs/t0/perfil/perfil
J'ai créé les pages et les onglets avec ionic g
et pour toutes les pages, j'ai le segment défini pour leurs, disons, des noms comme :
@IonicPage({ segment:'perfil' })
Comportement prévisible:
http://localhost :8100/#/login
http://localhost :8100/#/app/perfil
Étapes à reproduire :
Code associé :
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');
}
}
Les autres informations:
Informations ioniques : (exécutez ionic info
partir d'une invite de terminal/cmd et collez la sortie ci-dessous) :
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
L'équipe en est consciente.
La dernière fois que j'ai vérifié, c'était une priorité inférieure à celle des autres choses.
J'espère que cela sera également abordé bientôt.
@AmitMY merci pour la réponse !!
oui j'espère aussi !! le deeplinking sera un problème avec ce comportement, ne pensez-vous pas ?
Connaissez-vous une solution de contournement ?
Je pense que c'est problématique, et je ne sais pas s'il existe une solution de contournement
Je vais commencer à travailler dessus aujourd'hui.
Merci,
Dan
merci beaucoup @danbucholtz
Tchin Tchin
@tattivitorino merci, vous l'avez déjà demandé, je viens de poster la même chose sur le forum https://forum.ionicframework.com/t/url-not-reset-on-ionic-serve-live-reload/98080
Un processus pour cela?
Il est corrigé dans la dernière mise à jour,
@rashnk
J'ai mis à jour "npm install [email protected] --save --save-exact" ;
C'est toujours " http://localhost :8100/#/nav/n4/start" ;
suivez ceci http://blog.ionic.io/announcing-ionic-3-5-2/
Nous avons eu le même problème avec /nav/n4/
rashnk - êtes-vous en train de dire que c'est définitivement corrigé dans 3.5.2 ?
Cela n'a pas été directement abordé dans le billet de blog à l'adresse : http://blog.ionic.io/announcing-ionic-3-5-2/
Existe-t-il un journal des modifications que nous pouvons vérifier pour ce genre de chose à l'avenir ?
Merci :)
@dev-manager-uk Oui.Voir ceci : https://github.com/ionic-team/ionic/releases
Super merci.
Y a-t-il quelque chose que nous devons modifier dans les paramètres ou le code ? Ou il devrait Just Work™.
:RÉ
Le problème est toujours présent dans les deux 3.5.2 et 3.5.3 pour moi.
informations ioniques
forfaits mondiaux :
@ionic/cli-utils : 1.5.0
Ionic CLI : 3.5.0
forfaits locaux :
@ionic/app-scripts : 2.0.2
@ionic/cli-plugin-ionic-angular : 1.3.2
Ionic Framework : ionic-angular 3.5.3
Système:
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 , j'ai réussi à mettre à niveau. mais le problème persiste, même créer un nouveau projet pour la page de chargement paresseux en utilisant la dernière version ;
Oui. J'avais tort. l'URL a toujours du contenu supplémentaire, mais je travaillais sur chrome avec ionic serve -l
cela ne semble pas être un problème, vérifiez les captures d'écran
Oui, le problème n'est pas prévu pour l'URL.
Comportement prévisible:
http://localhost :8100/#/login
http://localhost :8100/#/app/perfil
@danbucholtz Nous attendons votre réponse, donc moi aussi j'ai le même modèle d'URL que ci-dessus avec le dernier Ionic 3.5.3
Même problème ici. Après la mise à niveau vers 3.5, mon application utilisant le deeplinking (une application de navigateur hébergée sur un serveur) ne fonctionnait plus comme prévu à cause des URL magiques comme "nav/n4".
Il semble que ionic3.5 ait changé le modèle de navigation, mais j'espère qu'il y aura bientôt une documentation détaillée.
Quoi qu'il en soit, merci pour le travail acharné d'ionic-team.
Même problème ici. Nous travaillons sur une application PWA et le deeplinking est très important.
Pareil ici. Cela nous retarde une libération.
@larpo1 Je vous suggère de rétrograder si vous le pouvez, il n'y a pas eu beaucoup de changements autres que la navigation dans 3.5.X
Bonjour à tous! Dan travaille actuellement à raccourcir nos URL et à se débarrasser d'une grande partie de la « magie » qu'elles contiennent. Nous espérons que cela sera bientôt prêt.
Merci Dan ! Merci Justine !
Ils doivent simplement fonctionner comme des URL Web
Ils devraient fonctionner comme :
https://www.test.com/about
À la place de:
https://www.test.com/#/nav/n4/about
ou même:
https://www.test.com/#/about
Pareil ici.
@dev-manager-uk Concernant le https://www.test.com/#/about c'est un autre sujet.
Vous le supprimez en modifiant le locationStrategy
dans le module de l'application :
@NgModule({
imports: [
BrowserModule,
IonicModule.forRoot(AppComponent, {
locationStrategy: "path", // <--- here
}),
...
]
})
Merci @sergiocarneiro
Je vais essayer ça !
Salut @jgw96
Avez-vous une version approximative d'une version pour corriger les liens profonds ?
Merci :-)
J'ai dû faire un downgrade pour camoufler ce problème :
"npm install [email protected] --save --save-exact"
Celui-ci sera publié demain. Les commits sont déjà sur Github, donc je vais fermer ça.
Merci,
Dan
Oui, ce serait bien d'avoir une solution
Je ne sais pas si cela ne pose pas de problèmes, mais vous devriez utiliser le nightly, 3.5.3-201707251952
, qui a ce correctif. Et s'il y a des problèmes avec cela, veuillez poster un problème avant la sortie de 3.6
Peut confirmer que $ npm install [email protected] --save --save-exact
fonctionne pour moi. Merci!
Modifier : utilisez la 3.6.0
Désolé, nous avons eu un problème imprévu et nous expédierons demain. Si vous souhaitez un accès anticipé, consultez npm install ionic-angular@nightly
. Si vous utilisez des onglets et voyez des choses se casser lors d'une actualisation, il s'agit d'une limitation connue de notre système qui sera corrigée dans Ionic 4 avec un léger changement d'API. En attendant, vous pouvez utiliser tabUrlPath
sur le ion-tab
pour l'atténuer. Fondamentalement, si vous avez un lien profond segment
et un tab
avec le même name/title
, il pourrait y avoir une collusion ici. A part ça, tout fonctionne à merveille jusqu'à présent.
Merci,
Dan
@sergiocarneiro Malheureusement, l'ajout de ce paramètre ne supprimera pas nav/n4
et vous ne pourrez pas accéder directement à cette URL.
Peut confirmer $ npm install [email protected] --save --save-exact fonctionne pour moi. Merci!
@numerized Vous pouvez utiliser 3.6.0 à la place.
Salut,
Je suis sur ionic cli v3.9.2 et j'ai toujours nav/n4 dans la barre d'url.
En fait j'ai même
/#/nav/n4/pu/loginpage/nav/n5/pr/privatepage
Comme j'ai une navigation publique et privée...
J'ai dépassé la version 3.6.0, donc je ne sais pas quel est le problème, sauf qu'il cause d'énormes problèmes
Vous devez utiliser 3.6.0 angulaire ionique.
Merci AmitMY, malheureusement cela ne résout pas le problème pour moi...
Que pourrais-je faire d'autre ?
Même chose ici, je suis sur [email protected] et toujours le même problème !!!
À part la mise à niveau de ionic et ionic-angular vers le dernier, @danbucholtz y a-t-il autre chose à faire ?
Pour moi, cela fonctionne en utilisant le dernier
Donc, si je lance ionc-angular 3.6.1 et fais:
@NgModule({
imports: [
BrowserModule,
IonicModule.forRoot(AppComponent, {
locationStrategy: "path", // <--- here
}),
...
]
})
Ça marche pour moi
Bonjour à tous ! il semble que beaucoup de choses se soient passées et changé depuis que j'ai créé ce problème ! Je peux voir qu'une partie des problèmes d'URL que nous avions auparavant sont résolus ! Pour les pages qui ne sont pas à l'intérieur d'un système d'onglets, tout fonctionne bien ! mais ce n'est pas le cas avec les onglets.
Je viens de créer une nouvelle application avec quelques pages comme la connexion, l'inscription, etc. et l'URL est parfaite pour celles-ci !
http://localhost :8100/#/login
http://localhost :8100/#/signup
Lorsque j'arrive à la page des onglets (lors de la connexion), voici ce que j'ai :
http://localhost :8100/#/tabs/tab1/tab1
ici, je n'ai pas configuré le segment sur IonicPage ni le tabUrlPath sur l'ion-tab
http://localhost :8100/#/tabs/tab-1/tab1
ici, j'ai configuré le tabUrlPath sur l'ion-tab (
http://localhost :8100/#/tabs/tab-1/tab-1
ici j'ai configuré les deux
@IonicPage({
segment : 'tab-1'
})
il me semble que tabUrlPath est lié au premier segment /tab-1 et que le segment IonicPage est le 2ème segment !
Existe-t-il un moyen de s'en débarrasser ? Je ne vois pas l'intérêt d'avoir les deux segments ! L'idéal serait : http://localhost :8100/#/tabs/tab-1, non ?
c'est mon info système:
`
packages cli : (/ionicv2/appv3/app/node_modules)
@ionic/cli-utils : 1.12.0
ionic (Ionic CLI) : 3.12.0
forfaits mondiaux :
cordova (Cordova CLI) : 7.0.1
forfaits locaux :
@ionic/app-scripts : 2.1.4
Cordova Platforms : none
Ionic Framework : ionic-angular 3.6.1
Système:
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
`
Certainement un problème pour moi aussi avec Ionic 3.9.2. J'utilise aussi des onglets comme les autres. Je fournirai plus d'informations si nécessaire.
J'obtiens une URL qui ressemble à ce qui suit : http://localhost:8100/create/nav/n9/create
.
Je suis tout à fait d'accord avec @tattivitorino pour dire qu'il n'est pas vraiment nécessaire d'avoir le nom de l'onglet et le nom de la page dans l'URL. Imo, les noms des onglets doivent être complètement remplacés par le nom de la page.
Une autre chose que j'ai remarquée est que je ne parviens pas à obtenir des URL avec des paramètres fonctionnant lors de l'utilisation d'onglets.
Cela ne fonctionne pas :
http://127.0.0.1 :8100/#/tabs/docs/documents/063b38ae-8edd-408b-b7fc-a346b1c16a8b
Alors que cela fait:
http://127.0.0.1 :8100/#/documents/063b38ae-8edd-408b-b7fc-a346b1c16a8b
La page que je veux obtenir a la définition de segment suivante :
segment: "documents/:documentId"
Je viens de faire une mise à niveau depuis mon commentaire précédent, en utilisant 3.9.2 et il affiche /nav/n4/ . Des mises à jour pour supprimer cela ou devrais-je rétrograder à 3.6.0 ?
EDIT: Ignorez cela, il semble que ce soit plus un problème avec mon package-lock.json dans npm, forcer l'installation à partir de mon package.json avec npm install --no-shrinkwrap
semblait faire l'affaire et installer correctement 3.9.2
J'exécute 3.9.2. Le problème persiste.
Ayant également ce problème sur 3.9.2.
ex : /nav/n5/MasterLogin
Cela fonctionnait normalement, puis j'ai commencé à créer le chemin /nav/ .. en utilisant également la 3.9.2!
J'ai découvert que le problème était dû au fait que j'avais plus d'un/commutateur ion-nav
dans la page principale (j'essayais d'afficher un volet divisé en ions ou sans)
@mariohmol Cela a résolu le problème pour moi. Merci de l'avoir inclus.
Merci pour le problème ! Ce problème est verrouillé pour empêcher les commentaires qui ne sont pas pertinents pour le problème d'origine. Si le problème persiste avec la dernière version d'Ionic, veuillez créer un nouveau problème et vous assurer que le modèle est entièrement rempli.
Commentaire le plus utile
Je vais commencer à travailler dessus aujourd'hui.
Merci,
Dan