Я использую сервис, который возвращает заметку для подписки с любой страницы, чтобы хотеть прослушать изменения.
FavoriteService.service.ts
:
favorites$ = new Subject<any>();
getObservableFavorite(): Observable<any> {
return this.favorites$.asObservable();
}
Я подписываюсь на странице панели инструментов DashboardPage.ts
:
favorites$: Observable<any>;
favoritesSubscription: Subscription;
constructor(private favService: FavoriteService){
this.favorites$ = this.favService.getObservableFavorite();
this.favoritesSubscription = this.favorites$.subscribe((data) => {
// console.log('event received');
this.favorites = data;
});
}
// unsubscribe
ngOnDestroy() {
this.favoritesSubscription.unsubscribe();
}
// both, just in case
ionViewWillLeave() {
this.favoritesSubscription.unsubscribe();
}
Мой шаблон дублируется, и я не знаю почему!
<div *ngIf="favorites?.length > 0">
<div class="img-thumb" *ngFor="let fav of favorites">
<ion-card [style.backgroundImage]="'url(' + fav?.background) + ')'">
</ion-card>
</div>
</div>
На другой странице, например MoviesPage
Я отправляю тему next()
событие через тот же сервис. Как это:
async makeFavorite(movie) {
this.favMovies.push(movie)
this.favService.favorites$.next(this.favMovies)
}
Я отладил свой код, и когда я получаю событие на приборной панели, данные принимаются без проблем, но шаблон дублируется: /.
Может кто-нибудь помочь мне ? :)