angualr4+adminLte写的后台,路由跳转后菜单无法展开

发布于 2022-09-06 19:25:45 字数 828 浏览 11 评论 0

clipboard.png

这样的一个菜单,点击展开收起,动画效果是adminLte也就是bootstrap配合jq做出来的。

现在的问题是从登录页跳转到主页后这个动画不执行。但是刷新一下就可以,或者直接打开主页也可以执行,唯独从登录页跳转过来后不执行。

下面是我的路由配置

clipboard.png

直接打开 http://localhost:4200/#/home/ 没有问题
http://localhost:4200/#/login/ 跳转到home就会发生不执行的情况。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

悲歌长辞 2022-09-13 19:25:45

今天刚好遇到这个问题看了一下adminlte源码,对于v3.0.1版本是第849行-853行

$(window).on(Event.LOAD_DATA_API, function () {
  $(Selector.DATA_WIDGET).each(function () {
    Treeview._jQueryInterface.call($(this), 'init');
  });
});

adminlte会在$(window).on('load.lte.treeview')的时候执行左边菜单初始化。
当页面初始路由是/login,此时左侧菜单的dom还没有加载,$(Selector.DATA_WIDGET)是拿不到菜单的,这个时候adminlte认为这个页面没有用到左侧菜单模块。当路由跳转到/,这个时候左侧菜单挂载到dom,但是adminlte不会再次触发$(window).on('load.lte.treeview')
结论就是如果window.onload的时候左侧菜单已挂载,那么问题不大;
反正就需要手动去触发window监听的load.lte.treeview事件。

gularJS解决方案

$scope.$on('$viewContentLoaded', function(event, viewConfig){ 
    $(window).trigger('load.lte.treeview')
});

Vue解决方案

mounted(){
    $(window).trigger('load.lte.treeview')
}

React解决方案

componentDidMount(){
    $(window).trigger('load.lte.treeview')
}
回梦 2022-09-13 19:25:45

你这个动画的执行可能是根据页面是否已经加载完成判断的,找到这个判断修改一下

雪化雨蝶 2022-09-13 19:25:45

你这个动画是在什么时候触发的? ngOnInit(), ngAfterViewInit() ?

冰雪之触 2022-09-13 19:25:45

你是怎么解决的
我也有同样的问题

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文