У меня есть служба, скажем, MyService, цель которой просто играть с наблюдаемыми rxjs:
import { Injectable } from '@angular/core'
import { Observable } from 'rxjs';
@Injectable()
export class MyService {
private mydatas: any[] = [{
id: 1,
name: "My first"
},
{
id: 2,
name: "My second"
},
{
id: 3,
name: "My third"
}];
public getMys(): any {
const myObservable = new Observable((observer) => {
setTimeout(() => {
observer.next(this.mydatas);
}, 1000);
setTimeout(() => {
observer.error("I AM AN ERRROR!!!")
}, 2000);
setTimeout(() => {
observer.complete();
}, 3000);
return myObservable;
});
}
}
Используется компонентом:
import { Component, OnInit } from '@angular/core';
import { MyService } from '../shared/my.service';
@Component({
selector: 'my-list',
templateUrl: './my.component.html',
styleUrls: ['./my.component.scss']
})
export class MyListComponent implements OnInit {
mys: any[] = [];
constructor(private myService: MyService) { }
ngOnInit() {
const myObservable = this.myService.getMys();
myObservable.subscribe(
(mys) => {
this.mys = mys;
},
(err) => {
},
() => {
}
);
}
}
Я запускаю его внутри HTML с угловыми аннотациями (* ngFor), и при запуске у меня появляется следующая ошибка в консоли Chrome:
ОШИБКА TypeError: Невозможно прочитать свойство 'subscribe' из undefined в
MyListComponent.push ../ SRC / приложение / мой / моя-лист / мой-list.component.ts.MyListComponent.ngOnInit
Что я делаю не так?
Спасибо