【发布时间】:2019-07-02 03:51:53
【问题描述】:
我有一个这样定义的服务:
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 构造函数”。
我错过了什么吗?
【问题讨论】:
-
您是否在任何其他组件或模块中注册了服务(在
providers数组中定义)? -
它应该(或可以)是单例。这取决于您提供服务的方式。如果当前不是,您应该查看您的模块和导入,并确保您的服务也有一个 providedInRoot: true 集。
-
@DeborahK 也非常感谢。它仍然在另一个组件中提供。现在它按预期工作。也许这对将来的其他人有帮助,因为它可能是一个陷阱。 :)
标签: javascript angular angular6 angular-services