У меня есть служба, у которой есть наблюдаемая, на которую подписан. Полезная нагрузка передается на предмет в сервисе. Однако, когда я подписываюсь на тему в моем компоненте, ничего не происходит. Я должен видеть console.log
в методе .subscribe
в ngOnInit
в компоненте.
У меня была такая же настройка, работающая с предыдущей версией, которая подписалась на наблюдаемую в результате операции http.get. Я хочу знать, почему он не работает с этой версией.
Услуга:
@Injectable()
export class TileService {
availableTiles$ = new Subject<any>();
// The view is expecing an array, else: Error trying to diff '[object Object]'. Only arrays and iterables are allowed
source: {}[] = [
{title: 'Title A'},
{title: 'Title B'}
];
simpleObservable = new Observable((observer) => {
observer.next(this.source);
observer.complete();
});
constructor() { }
getTiles(): void {
this.simpleObservable.subscribe(x => this.availableTilesStream(x));
}
availableTilesStream(data) {
console.log(data); // Logs an array of the two objects from the source array
this.availableTiles$.next(data); // Nothing seems to happen here.
}
}
Component.ts:
@Component({
selector: 'app-available-tiles',
templateUrl: './available-tiles.component.html',
styleUrls: ['./available-tiles.component.css']
})
export class AvailableTilesComponent implements OnInit {
tiles: {}[];
constructor(private tileService: TileService) { }
ngOnInit() {
this.tileService.getTiles();
this.tileService.availableTiles$.subscribe(x => {
console.log('Log from availableTiles$.subscribe in ngOnInit: ', x);
this.tiles = x;
});
}
}