Несколько экземпляров синглтон-сервиса в угловых 6 - PullRequest
0 голосов
/ 17 октября 2018

У меня есть угловой сервис, предоставленный в корне

import {Injectable} from "@angular/core";
import {BehaviorSubject} from "rxjs";
import {Admin} from "../models/admin.model";
import {AdminsService} from "./admins.service";

@Injectable({
  providedIn: 'root'
})
export class CurrentUserService {
  public user$: BehaviorSubject<Admin> = new BehaviorSubject(null);

  constructor(private _adminsService: AdminsService) {
    console.log('current user service instantiated');
    this._adminsService.getCurrentUser()
      .subscribe(user => {
        this.user$.next(user);
      });
  }

  public update() {
    this._adminsService.getCurrentUser().subscribe(user => {
      this.user$.next(user);
    })
  }

  public clear() {
    this.user$.next(null);
  }
}

Я предоставляю его и Http Interceptor в app.module таким образом:

providers: [
    CurrentUserService,
    {
      provide: HTTP_INTERCEPTORS,
      useClass: AuthInterceptor,
      multi: true
    }
  ],

И когда я пытаюсь внедрить егов перехватчик я получаю много сообщений от конструктора, что указывает на то, что служба создается много раз.Кто-нибудь может объяснить это поведение и может иметь представление о том, как это исправить?

консоль с сообщениями скриншот

1 Ответ

0 голосов
/ 17 октября 2018

Это потому, что вы предоставляете одну и ту же услугу несколько раз в одном и том же модуле -

Сначала

@Injectable({
  providedIn: 'root'
})

Второй

providers: [
    CurrentUserService,
    {
      provide: HTTP_INTERCEPTORS,
      useClass: AuthInterceptor,
      multi: true
    }
  ],

Лучшеудалить из первого.

...