为什么被实例化在每个路由改变单独服务,而不是只在角6次?

问题描述 投票:0回答:1

我有一个是这样定义的服务:

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的构造”上的每个路径的变化。

我错过了什么?

javascript angular angular6 angular-services
1个回答
2
投票

providedIn:“根”的意思,它只会被实例化一次,并且在同一实例将被提供给所有的依赖请求。如果你看到构造函数运行超过一次,那么你在其他地方提供更多。搜索您所提供它作为providedIn:“根”不需要被列在名单提供。搜索“规定:”看看什么是提供MyDataService并删除它。如果你正在使用VS代码,你可以右键单击类名称并选择找到的所有引用,看看它是在提供阵列。

© www.soinside.com 2019 - 2024. All rights reserved.