now, after making a login, dynamically pass the menu data and generate the menu according to the logger. So I use rxjs
to write a global service, where setMenu ()
is to set the data into the service after logging in, and getMenu ()
is in sidebar to get the corresponding menu data.
import { Injectable,OnInit } from "@angular/core";
import {BehaviorSubject} from "rxjs";
@Injectable()
export class BehaviorService implements OnInit{
menuBehavior:any;
menuData:any;
constructor() {
this.menuBehavior=new BehaviorSubject(null);
}
ngOnInit(){
}
setMenu(menuData){
console.log("");
this.menuBehavior.next(menuData);
console.log(this.menuBehavior);//
}
getMenu(){
return this.menuBehavior;//
}
}
however, in sidebar, when you subscribe, you do get null
. I wonder why
injects menu data when you are already in the stream during setMenu. Why not when you subscribe?
ngOnInit() {
this.menuService.getMenu().subscribe((v)=>{
console.log(v);// null
this.data=v;
this.allData=v
});
}