Принудительно использовать Angular 6, чтобы НИКОГДА не использовать компонент - PullRequest
0 голосов
/ 16 октября 2018

У меня проблема с Angular 6, когда я захожу на страницу списка хотя бы дважды.

На этой странице списка я добавляю информацию в таблицу

<table id="table-products" class="wb-tables table table-striped table-hover" data-wb-tables='{ "ordering" : false }'>
<thead>
  <tr>
    <th>Id</th>
    <th>Title</th>
  </tr>
</thead>    
<tbody>
  <tr *ngFor="let product of products">
    <td>{{product.id}}</td>
    <td><a routerLink="{{product.routerLink}}">{{product.title}}</a></td>
  </tr>
</tbody>

И информация загружается в бэкэнд следующим образом:

  ngOnInit() {
    this.productService.getAll().subscribe( (products: IProduct[]) => {
      this.products = products;
      this.products.map(p => p.routerLink = ['../' + p.id]);
    });
  }

Я также должен вызывать некоторый javascript, когда запускается представление компонента

ngAfterViewInit() {
  if (wb.isReady) {

    setTimeout(() => {
      $('.wb-tables:not(.wb-tables-inited)').trigger('wb-init.wb-tables');
    }, 0);
  }
}

Это хорошо работает напервая загрузка независимо от того, введу ли я URL в браузере или перейду из другого компонента.Но когда я возвращаюсь к нему во второй раз из обычной навигации по маршрутизатору, у меня возникает проблема, связанная с тем, что javascript не инициализирует таблицу данных должным образом.

Кажется, что он кэширует компонент?Хотя конструктор и ngOnInit вызываются на все вызовы ...

Я пытался добавить собственную стратегию повторного использования, но она не работает ...

export class ProductsRouteReuseStrategyService implements RouteReuseStrategy {
  shouldDetach(route: ActivatedRouteSnapshot): boolean { return false; }
  store(route: ActivatedRouteSnapshot, detachedTree: DetachedRouteHandle): void {}
  shouldAttach(route: ActivatedRouteSnapshot): boolean { return false; }
  retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle|null { return null; }
  shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {
    return false;
  }
}

есть идеи?

...