Merhaba,
.Net Core & Angular projesinde sol menüyü dinamik hale getirmek istiyorum. Gerekli servisleri .net ve angular tarafında yazdım ve SideBarMenuComponent 'inde menu:AppMenu değişkenini :
this._appNavigationService.GetUserMenu().subscribe(res => { this.menu = res; console.log("res,appmenu this.menu", res, this.menu); });
Yukarıdaki gibi set ediyorum fakat sayfa load olana kadar 74 kere aşağıdaki gibi menu items bulunamadı hatası veriyor. Bende bunu çözmek için ngif="menu" yapıyorum bu seferde sol menu hiç dolmuyor. Sadece mouse ile üzerine geldiğimde doluyor.
Bu sorunu çözmek için ne yapmalıyım ?
8 Answer(s)
-
0
ngAfterViewInit(): void { this._appNavigationService.GetUserMenu().pipe(finalize(() => setTimeout(() => { this.layoutRefService.addElement('asideLeft', this.el.nativeElement); }))) .subscribe(res => { this.menu = res; }); }
yukarıdaki gibi ya da direkt olarak subscribe içerisine menuyu set ettikten sonra setTimeout konudu çalıştrdım ama bir fark olmadı. Html tarafta ngif kullandığımda hiç bir şekilde tetiklemiyor. Ngif kullanmadığımdada sürekli hata veriyor menu items null olduğu için.
-
1
Merhaba,
Gecikme için özür dileriz, biz de daha önce bu şekilde bir kullanım denemediğimiz için biraz zamanımızı aldı çözümü bulmak.
Çözüm olarak side-bar-menu.component.ts içerisinde
changeDetection: ChangeDetectionStrategy.OnPush
kısmınıchangeDetection: ChangeDetectionStrategy.Default
olarak değiştirebilirsiniz. Bu kısmı nasıl olduysa gözden kaçırmışız.Sayfanın ilk açılışında hata almamak için de menu tanımını aşağıdaki gibi değiştirebilirsiniz:
menu: AppMenu = new AppMenu('', '', []);