【发布时间】:2021-02-19 19:05:30
【问题描述】:
我正在使用 Angular 10 并尝试从 node.js REST 服务器监听服务器发送的事件。我是 Angular 的菜鸟(这是一个学校项目。)无论如何,我发现的所有教程都创建了一个服务,该服务实现了 EventSource 并在收到块时订阅它们。一切都可以编译,但是当我浏览到使用该服务的页面时,我收到此错误“NullInjectorError: No provider for EventSource”。任何人都可以提供可能有帮助的参考资料或告诉我我需要做些什么来克服错误吗?
明确地说,我不是在创建新的 EventSource 类,而是使用我理解的 JavaScript 内置类 (https://developer.mozilla.org/en-US/docs/Web/API/EventSource)。
删除“private _eventSource:EventSource”解决了这个问题,这引发了另一个问题(我想我可能偶然发现了我的答案。)是不是不能声明像 EventSource 这样的内置 JavaScript 类型的变量?
这是我的代码...
import { Injectable, NgZone } from '@angular/core';
import { HttpClient } from '@angular/common/http'
import { Facility } from '../models/facility.model'
import { Observable } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class MyClass {
constructor(
private _http: HttpClient,
private _zone: NgZone,
private _eventSource: EventSource // removing this resolved the error
) { }
getMyEventSourceStream() {
return new Observable((observer) => {
const eventSource = new EventSource(this._summaryUrl);
eventSource.onopen = (event) => {
console.log(event);
}
eventSource.onmessage = (event) => {
console.log(event);
this._zone.run(() => {
observer.next(event);
})
};
eventSource.onerror = (error) => {
this._zone.run(() => {
observer.error(error);
})
}
});
}
}
【问题讨论】:
标签: angular provider eventsource