我有一个是这样定义的服务:
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { Observable, of, Subscription, combineLatest } from 'rxjs';
import { map, catchError, retry } from 'rxjs/operators';
@Injectable({
providedIn: 'root',
})
export class MyDataService {
constructor(private http: HttpClient) {
console.log('Called MyDataService constructor');
}
}
据我了解这种服务应该是整个,技术成果运行单。
现在,当页面刷新,它记录“DataService的调用构造函数”正确。
不幸的是,当我浏览到另一个页面(与延迟加载模块的新航线)构造函数中再次运行它日志“叫DataService的构造”上的每个路径的变化。
我错过了什么?
providedIn:“根”的意思,它只会被实例化一次,并且在同一实例将被提供给所有的依赖请求。如果你看到构造函数运行超过一次,那么你在其他地方提供更多。搜索您所提供它作为providedIn:“根”不需要被列在名单提供。搜索“规定:”看看什么是提供MyDataService并删除它。如果你正在使用VS代码,你可以右键单击类名称并选择找到的所有引用,看看它是在提供阵列。