@musa.demir I have emailed the related code, now.
Hi, Is there any update?
Hi,
The menu is loaded fine as per my previous comment, however, sometimes I need to progammatically refresh menu so that it gets the latest data from the server. What is the best way to refresh the menu?
I tried to use events for this purpose but when event is triggered, my global function inside side-bar-menu.component.ts
is not available inside the trigged code so I can't simply use the code below.
loadMyMenu(myParameterForMenuSelection: number): void {
//Code here for getting the menu from the server.
}
reloadMenu(): void {
abp.event.on('myParameterForMenuSelectionChanged', function (myParameterForMenuSelection) {
console.log("EVENT IS FIRED");
console.log(myParameterForMenuSelection);
this.loadMyMenu(myParameterForMenuSelection);//I get error here that loadMyMenu is not a function
});
}
I receive the below error when event is fired.
ERROR TypeError: this.loadMyMenu is not a function
What is the best way to refresh the menu?
I have fixed this issue, thanks to @musa.demir for asking me to use *ngIf
. I am showing my implementation below so that it may help someone else if they get stuck.
In side-bar-menu.component.html
add *ngIf="menu"
, note capital I of If.
<!-- BEGIN: Aside Menu -->
<div [class]="'aside-menu-wrapper aside-menu-' + currentTheme.baseSettings.menu.asideSkin" id="kt_aside_menu_wrapper" *ngIf="menu">
<div #asideMenu ktMenu [options]="menuOptions" [perfectScrollbar]="{wheelPropagation: false}"
[ngStyle]="{'max-height': '90vh', 'position': 'relative'}" id="kt_aside_menu" class="aside-menu scroll"
[attr.data-menu-vertical]="1" [attr.data-menu-scroll]="ui.getIsMenuScrollable() ? 1 : 0"
[attr.data-menu-dropdown]="ui.isSubmenuToggleDropdown() ? 1 : 0" (mouseenter)="mouseEnter($event)"
(mouseleave)="mouseLeave($event)" [class]="ui.getLeftAsideClass()">
<ul class="menu-nav">
<li class="menu-item mb-5" aria-haspopup="true"
data-ktmenu-submenu-toggle="hover" *ngIf="currentTheme.baseSettings.menu.searchActive">
<menu-search-bar></menu-search-bar>
</li>
<ng-container [ngTemplateOutlet]="menuListTemplate"></ng-container>
</ul>
</div>
</div>
<!-- END: Aside Menu -->
Replaced this.menu = this._appNavigationService.getMenu();
in ngOnInit()
of side-bar-menu.component.ts
with the code shown below. Replace your service and method names. Also, don't forget to inject your service in the constructor of side-bar-menu.component.ts
this._myMenuService.getAllGrantedMenus(1, 1, 2)
.subscribe(result => {
console.log(result);
this.menu = result;
});
Just an update, I was using ngif instead of ngIf (note capital I), after changing it to capital I, I don't receive error but menu is still not displayed, even though it contains the data. I don't know if menu is displayed this way after ngOnInit, there may be a different way of re-rendering i.e calling some method etc. I am not be sure though, can you think of anything else, as it seems like a common functionality?
@musa.demir Thank you for your reply.
When I add *ngif="menu"
, I received the below error.
`
<div [class]="'aside-menu-wrapper aside-menu-' + currentTheme.baseSettings.menu.asideSkin" id="kt_aside_menu_wrapper" *ngif="menu">
<div #asideMenu ktMenu [options]="menuOptions" [perfectScrollbar]="{wheelPropagation: false}"
[ngStyle]="{'max-height': '90vh', 'position': 'relative'}" id="kt_aside_menu" class="aside-menu scroll"
[attr.data-menu-vertical]="1" [attr.data-menu-scroll]="ui.getIsMenuScrollable() ? 1 : 0"
[attr.data-menu-dropdown]="ui.isSubmenuToggleDropdown() ? 1 : 0" (mouseenter)="mouseEnter($event)"
(mouseleave)="mouseLeave($event)" [class]="ui.getLeftAsideClass()">
<ul class="menu-nav">
<li class="menu-item mb-5" aria-haspopup="true"
data-ktmenu-submenu-toggle="hover" *ngIf="currentTheme.baseSettings.menu.searchActive">
<menu-search-bar></menu-search-bar>
</li>
<ng-container [ngTemplateOutlet]="menuListTemplate"></ng-container>
</ul>
</div>
</div>
<!-- END: Aside Menu -->`
Yes, this.menu contains data when event is fired, please see below the console output.
There must be a way of re-rendering menu.
@ismcagdas, are there any built-in methods in ASPNETZero that you use for using LocalStorageService
?
I upgraded to the latest node version 14.15.1 and the error has disappeared.
Could you still confirm the correct way for changing port number (in case I am overdoing the changes) as I am sharing a remote desktop environment with a colleague and we both needs to run the system at the same time so we can't use the same port?
Thanks, works fine now.