The problem was
setTimeout(() => { this.app.dispatch(this.menu); }, 500);
There no need to dispatch menu to add it on admin panel.
creating a NavigationMenu is enough
this.menu = NavigationMenu.create(this.app, {
items: [dashboardLink, settingsLink],
})
But the second problem remains
The NavigationMenu does not switch routes inside the SPA application!