【发布时间】:2018-01-24 22:17:21
【问题描述】:
我有一个通过组件订阅的带有可观察对象的服务。这似乎有效,因为订阅者正在显示初始值。我有另一个组件,它正在更新 observable,但是没有显示新值。
服务:
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/of';
@Injectable()
export class BannerService {
banners$: Observable<any[]> = Observable.of([]);
getBanners(): Observable<any[]> {
return this.banners$;
}
setBanners(banners: any[]): void {
this.banners$ = Observable.of(banners);
}
}
带有订阅者的组件:
import { Component, ViewEncapsulation, OnInit } from '@angular/core';
import { BannerService } from './../banner/banner.service';
@Component({
selector: '.banner',
templateUrl: './banner.component.html',
styleUrls: ['./banner.component.sass'],
encapsulation: ViewEncapsulation.None
})
export class BannerComponent implements OnInit {
constructor(private bannerService: BannerService){}
ngOnInit() {
this.bannerService.banners$.subscribe(banners => {
console.log(banners);
});
}
}
带有setter的组件:
import { Component, ViewEncapsulation, OnInit } from '@angular/core';
import { BannerService } from './../banner/banner.service';
@Component({
selector: '.home-component',
templateUrl: './home.component.html',
styleUrls: ['./home.component.sass'],
encapsulation: ViewEncapsulation.None
})
export class HomeComponent implements OnInit {
data = {
banners: [
{
title: 'Title 1',
image: '../images/image1.jpg'
},
{
title: 'Title 2',
image: '../images/image2.jpg'
},
{
title: 'Title 3',
image: '../images/image3.jpg'
}
]
}
constructor(private bannerService: BannerService){}
ngOnInit(): void {
this.bannerService.setBanners(this.data.banners);
}
}
任何帮助都将不胜感激,我尝试了很多不同的方法,但都无法正常工作。
【问题讨论】:
-
此修复无法解决问题,任何人都可以帮助stackoverflow.com/questions/48973734/…
标签: angular angular-services angular-components angular-observable