Ионный 4-й угловой маршрут, наблюдаемый не работает, как только я покидаю вид и снова вхожу - PullRequest
0 голосов
/ 03 октября 2018

У меня есть настройка, где на одной ионной странице 4 я показываю несколько элементов на основе параметров запроса.Рассмотрим список с разными категориями и по клику я обновлю параметры запроса.

Итак, у меня есть наблюдаемое

this.route.queryParamMap.subscribe((data) => { console.error('in subscribe', data); this.updateCategories(data['params']); });

Это прекрасно работает, когда я впервые захожу на страницу.Но когда я перехожу на какую-то другую страницу и затем возвращаюсь, console.error из этого кода перестает работать.

Если я прав, наблюдаемые на маршруте самоуничтожаются под углом (я также пытался отменить подписку на ngOnDestroy, а затем снова подписаться).И когда я вернусь снова, он должен подписаться на queryParamMap маршрута и работать как прежде.

Я использую ionic 4 beta 12 с Angular 6.0.8.Есть идеи, почему это может происходить?

1 Ответ

0 голосов
/ 03 октября 2018

Вы подписываетесь в методе OnInit или где-то еще?Я попробовал ваш пример кода, и он отлично работает на моем локальном компьютере:

app.routing.ts

import { Routes, RouterModule } from '@angular/router';
import { ModuleWithProviders } from '@angular/core';

import { ParentComponent } from './parent.component';
import { NewRouteComponent } from './new-route.component';

export const routes: Routes = [
  { path: '', component: ParentComponent },
  { path: 'parent', component: ParentComponent },
  { path: 'newroute', component: NewRouteComponent }
];

export const routing: ModuleWithProviders = RouterModule.forRoot(routes);

parent.component.ts

import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';

@Component({
  selector: 'app-parent',
  template: `<a routerLink="../newroute">Click here</a>`,
  styleUrls: ['./parent.component.css']
})
export class ParentComponent implements OnInit {
  constructor(private activatedRoute: ActivatedRoute) { }

  ngOnInit() {
    this.activatedRoute.queryParamMap.subscribe((data) => {
      console.error('in subscribe', data);
    });
  }

}

new-route.component.ts

import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';

@Component({
  selector: 'app-new-route',
  template: `<p>new-route works!</p>
  <button (click)="goBack()">Back</button>`,
  styleUrls: ['./new-route.component.css']
})
export class NewRouteComponent implements OnInit {

  constructor(private activatedRoute: Router) { }

  ngOnInit() {}

  goBack() {
    this.activatedRoute.navigate(['./parent']);
  }
}
...