0

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

2017-09-08 提问
3 个回答
0

已采纳

使用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();
 } 
}
0

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

0

可以使用路由守卫 resolve

撰写答案

推广链接