ionic-team / ionic-team/ionic-framework

Ionic router. OnInit working only once

Abierto
#17,853 49 comentarios 9 reacciones 0 asignados Ver en GitHub
package: angular type: bug
Lenguaje dominante
TypeScript
Estrellas
52.7k
Forks
13.3k
Merge medio
1 d 15 h
PR fusionados (30 d)
51

Descripción

# Bug Report

**Ionic version:**
[x] **4.1.0**

**Current behavior:**
Ionic router run OnInit only first time

**Expected behavior:**
Run OnInit each time

I have an app with Angular. It is a simple list of items, after clicking on an item opened item details page. Two routes:
- IndexComponent. Items list.
- ItemDetailsComponent. Edit item page

```
const routes: Routes = [
{
path: 'index',
component: IndexComponent
},
{
path: 'item/:id',
component: ItemDetailsComponent
}
];
```

I use ItemsService -> get/save items.

```
export class IndexComponent implements OnInit {
public items: Array;

constructor(private itemsService: ItemsService) {
}

ngOnInit() {
this.itemsService.getItems()
.subscribe(data => this.items = data)
}
}
```

```
export class ItemDetailsComponent implements OnInit {
public item: Item;

constructor(private route: ActivatedRoute,
private itemsService: ItemsService) {
}

ngOnInit() {
const id = this.route.snapshot.params['id'];
this.itemsService.getItem(id)
.subscribe(data => this.item = data)
}
}
```

In Angular application, OnInit lifecycle event working each time when I open these pages.
And it is fine. I should edit an item on ItemDetailsComponent, and after clicking back to IndexComponent I see new information.

I start an Ionic project. Changed `router-outlet` to `ion-router-outlet`
Same structure, same routing.
And now:

- IndexComponent OnInit working the only first time. When I back to this page from ItemDetailsComponent - OnInit not rerun. Ionic reuse IndexComponent, But I need a new instance.

- ItemDetailsComponent OnInit working the only first time for each item in the items list.
But if I edit an item, return back to IndexComponent, update items handly(click a button, because OnInit not work). And open ItemDetailsComponent again - I see old information because OnInit not firing - this is an old instance.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.