Angular Синглтон инъекционный сервис не работает - PullRequest
0 голосов
/ 26 марта 2020

У меня есть сервис, который я установил как инъецируемый, у которого есть свойство, которое я хочу разделить между двумя компонентами. каждый компонент имеет отдельный маршрут

вот мой сервис:

import { Injectable } from '@angular/core';
import { OAuthService, JwksValidationHandler } from 'angular-oauth2-oidc';
import { authConfig } from './sso.config';
import { HttpClient} from '@angular/common/http';

@Injectable({
providedIn: 'root'
})
export class AuthorizeService {

private isAuth: boolean;

constructor(private oauthService: OAuthService, private http: HttpClient) {
    console.log('init services');
}

 setIsAuth(value: boolean)
 {
  this.isAuth = value;
 }

 getIsAuth()
 {
   return this.isAuth;
 }
}

Правильно, которым я хочу поделиться, является isAuth, я добавил сервис в качестве поставщика к app.model.ts

@NgModule({
  declarations: [
    AppComponent,
    HomeComponent,
    LoginComponent
  ],
  imports: [
    BrowserModule,
    RouterModule,
    AppRoutingModule,
    HttpClientModule,
    OAuthModule.forRoot()
  ],
  providers: [{
    provide: HTTP_INTERCEPTORS,
    useClass:TokeInterceptorService,
    multi: true
  }, AuthorizeService],
  bootstrap: [AppComponent]
})
export class AppModule { }

вот 2 компонента 1. домашний компонент, который устанавливает значение true

import { Component, OnInit } from '@angular/core';
import { AuthorizeService} from '../authorize.service'

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.css']
})
export class HomeComponent implements OnInit {

  constructor(private authorizeService: AuthorizeService) { }
  ngOnInit() {
    this.authorizeService.setIsAuth(true);
  }
}

2. второй компонент, компонент входа в систему просто отображает значение isAuth на данный момент.

import { Component, OnInit } from '@angular/core';
import { AuthorizeService} from '../authorize.service'

@Component({
  selector: 'app-login',
  templateUrl: './login.component.html',
  styleUrls: ['./login.component.css']
})
export class LoginComponent implements OnInit {

  constructor(private authorizeService: AuthorizeService) { 

  }
  ngOnInit() {  
    console.log('is auth ', this.authorizeService.getIsAuth());
  }
}

есть ли определенный c способ перехода от домашнего компонента к компоненту входа в систему, чтобы служба не могла получить снова инициализирован?

, потому что, когда я перехожу на localhost: 4200 / login, isAuth сбрасывается, а служба повторно инициализируется.

Я пытаюсь реализовать аутентификацию OpenIdConnect, и компонент / login является моим перенаправлением URI, поэтому я хочу убедиться, что мои свойства авторизации являются глобальными для моего приложения.

Возможно, что-то не хватает, может Вы помогаете?

...