Javascript 每次创建服务-角度
我只想创建一次服务 我的服务被注入到两个组件中,我将该值设置为true。 问题是,服务总是在我与他一起打开视图时创建的,并且我的值再次默认为false。 如何让它成为单身Javascript 每次创建服务-角度,javascript,html,css,angular,typescript,Javascript,Html,Css,Angular,Typescript,我只想创建一次服务 我的服务被注入到两个组件中,我将该值设置为true。 问题是,服务总是在我与他一起打开视图时创建的,并且我的值再次默认为false。 如何让它成为单身 import {Injectable} from '@angular/core'; @Injectable({ providedIn: 'root' }) export class GlobalStateService { constructor() { console.log('GlobalState c
import {Injectable} from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class GlobalStateService {
constructor() {
console.log('GlobalState created');
}
myValue = false;
}
我是这样用的:
@Component({
selector: 'app-nav',
templateUrl: './nav.component.html',
styleUrls: ['./nav.component.css']
})
export class NavComponent implements OnInit {
model: any = {};
permission: any;
constructor(public authService: AuthService,
private alertifyService: AlertifyService,
private globalState: GlobalStateService) {
}
模块:
import {BrowserModule} from '@angular/platform-browser';
import {NgModule} from '@angular/core';
import {HttpClientModule} from '@angular/common/http';
import {FormsModule} from '@angular/forms';
import {AppComponent} from './app.component';
import {NavComponent} from './nav/nav.component';
import {AuthService} from './_services/auth.service';
import {HomeComponent} from './home/home.component';
import {RegisterComponent} from './register/register.component';
import {AlertifyService} from './_services/alertify.service';
import { SettingsComponent } from './settings/settings.component';
import { BooksComponent } from './books/books.component';
import { UsersComponent } from './users/users.component';
import { GlobalStateService } from './_services/global-state.service';
import { StoreModule } from '@ngrx/store';
import { changeTabReducer } from './reducers/tab.reducer';
@NgModule({
declarations: [
AppComponent,
NavComponent,
HomeComponent,
RegisterComponent,
SettingsComponent,
BooksComponent,
UsersComponent
],
imports: [
BrowserModule,
HttpClientModule,
FormsModule
],
providers: [
AuthService,
AlertifyService,
GlobalStateService
],
bootstrap: [AppComponent]
})
export class AppModule {
}
有两种方法可以使服务成为Angular中的单例服务:
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class GlobalStateService {
}
基于代码,这看起来不错,但是注意:用
@Injectable({providedIn:'root'})装饰它
,不在任何提供者数组中提供它。
如果依赖项注入正确实现,它应该只向组件注入服务的单个实例。如果这种情况没有发生,可能是由于错误的实现。你能包括使用你的服务的模块和组件的代码吗?我补充说,这很好吗?或者更多?你能添加整个导航组件(如服务使用的地方)和服务使用的第二个组件,并像我一样通过构造函数将其注入到每个服务中吗?好吧,它现在不起作用检查,我补充说,在提供者下移动GlobalStateService,它应该像我在评论中提到的那样起作用没有它就不起作用,我现在添加了它,但也不起作用。每次新建时都会创建服务