Всем привет! Скорее всего делаю, что-то не так.
Есть каталог новостей. Новости получаю с сервера в json формате. Создаю subject переменные в сервисах, подписываюсь в компонентах. Так же есть компонент для фильтрации новостей по разделам. Разделы прилетают с сервера вместе с новостями. Все хранится в сервисах.
Проблема следующая. Когда перехожу в детальный просмотр новости, и возвращаюсь обратно, почему-то затираются переменные, которые должны содержать список разделов для фильтра и новости. И подписка на Subject переменные не отрабатывает.
Код сервиса новостей
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
import { SectionsService } from './sections.service';
@Injectable({
providedIn: 'root',
})
export class NewsService {
item: [] = [];
news: any[] = [];
activeNews = new Subject<any[]>();
constructor(private sectionsService: SectionsService) {
this.sectionsService.activeSection.subscribe(section => {
if (section != "") {
this.activeNews.next(this.news.filter(items => items.name_section === section));
} else {
this.activeNews.next(this.news);
}
})
}
public newsesList(list: []) {
this.item = list;
}
public listItems(items: any) {
this.news = items;
this.sectionsService.getSections(items);
this.activeNews.next(items);
}
}
Код компонента:
import { Component, OnInit } from '@angular/core';
import { NewsService } from '../news.service';
@Component({
selector: 'app-news-list',
templateUrl: './news-list.component.html',
styleUrls: ['./news-list.component.scss']
})
export class NewsListComponent implements OnInit {
nameComponent: string= "News list message: ";
newsActive: any[] = [];
colNews: number = 9;
constructor(private newsesService: NewsService) {}
ngOnInit(): void {
this.newsesService.activeNews.subscribe(newses => {
this.newsActive = newses;
})
}
activeElement(item: []): void {
this.newsesService.newsesList(item);
}
addNews(): void {
this.colNews = this.colNews + 9;
}
}
Если поможете решить проблему, с новостями, то смогу решить проблему с фильтром самостоятельно.