ng2中如何将某个变量导出全局变量,以便其他模块的调用

在登录后可以获取到当前用户所拥有的权限,如何将权限保存为全局变量,以便其他模块的使用?(暂时不考虑使用storage之类的方法)

阅读 12.2k
3 个回答

使用Service就可以,写一个单独的service去读写用户权限信息,在APPModule中提供,然后在所有的component中都可以使用了。见下面的例子:

userinfo.service.ts

import { Injectable } from '@angular/core';
import { UserInfo } from '../model/user-info.model';
@Injectable()
export class UserInfoService {

private  userInfo = new UserInfo();
  constructor() { }

  setUserInfo(userInfo: UserInfo) {
    this.userInfo = userInfo;
  }

  getUserInfo() {
    return this.userInfo;
  }
}

在AppModule中通过提供商提供全局的服务
app.module.ts

import {BrowserModule} from '@angular/platform-browser';
import {AppComponent} from './app.component';
import {UserInfoService} from './service/user.service';

@NgModule({
    declarations: [
        AppComponent,
        LoginComponent
    ],
    imports: [  
        BrowserModule, 
    ],
    providers: [
      UserInfoService
    ],
    bootstrap: [AppComponent]
})
export class AppModule {
}

app.componenet.ts

import {Component} from '@angular/core';
import { UserInfo } from '../model/user-info.model';
@Component({
    selector: 'root',
    templateUrl: './app.component.html',
    styleUrls: ['./app.component.css']
})
export class AppComponent {

private  userInfo;
constructor(private userInfoService:UserInfoService) {
      this.userInfo= this.userInfoService.getUserInfo();
 } 
}

使用InjectionToken,放到根模块的providers里,在需要的地方使用DI来获取
不建议使用全局变量

可以使用路由守卫 resolve

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏