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
Merhaba,
Peki son durumda "ngIf" kullandığınızda console'a herhangi bir log yazılıyor mu ?
-
0
Hayır, sadece mouse ile sol menu üzerine geldiğimde menu yu tetikleyip dolduruyor diğer turkü arkada menu içeriğini ne kadar değiştirirsem değiştireyim ekrana yansımıyor. Neyin engellediğini bir türlü bulamadık.
-
0
Merhaba,
Menu'yü alan kodu ngAfterViewInit içerisine alıp, onun subscribe kısmına da setTimeout kodunu taşıyabilir misiniz ?
-
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.
-
0
this._appNavigationService.GetUserMenu() .subscribe(res => { this.menu = res; setTimeout(() => { this.layoutRefService.addElement('asideLeft', this.el.nativeElement); }); });
Bu şekilde de bir fark olmadı maalesef.
-
0
Merhaba, Bu sorunu hala çözemedik.
İyi çalışmalar.
-
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('', '', []);
-
0
Merhaba,
ChangeDetectionStrategy.Default olarak yaptığımızda sorun düzeldi.
Teşekkürler