为什么Jquery在角度7改变路线时不加载?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么Jquery在角度7改变路线时不加载?相关的知识,希望对你有一定的参考价值。

我在使用角度7的路线之间导航时遇到问题,例如......我在app-component.html中有这个代码

<app-navbar *ngIf="currentUser"></app-navbar>
<router-outlet></router-outlet>
<app-footer *ngIf="currentUser"></app-footer>

页面中的所有内容都有效,<router-outlet></router-outlet>有页面的主要组件,这个组件有另一个组件,<app-leftmenu></app-leftmenu>这是侧边栏;最初这是一个html-bootstrap 3模板,我分段用于角度cli。

好的,这个问题的原因是SIDEBAR使用jquery进行基本操作,例如使用下一个代码进行折叠和展开:

//
// Sidebar categories
//

// Hide if collapsed by default
$('.category-collapsed').children('.category-content').hide();


// Rotate icon if collapsed by default
$('.category-collapsed').find('[data-action=collapse]').addClass('rotate-180');


// Collapse on click
$('.category-title [data-action=collapse]').click(function (e) {
    e.preventDefault();
    var $categoryCollapse = $(this).parent().parent().parent().nextAll();
    $(this).parents('.category-title').toggleClass('category-collapsed');
    $(this).toggleClass('rotate-180');

    containerHeight(); // adjust page height

    $categoryCollapse.slideToggle(150);
});

但是不能在角度工作,只有当我重新加载一次组件时,如果我导航到其他路线侧边栏忽略jquery,但刷新页面工作...我如何解决这个...没有刷新?谢谢您的帮助!

答案

大概是因为当时你的jQuery代码被执行$('.category-collapsed'),没有这样的元素。

试试jQuery.on(),它允许以后绑定:https://api.jquery.com/on/

所以这

$('.category-title [data-action=collapse]').click(fn)

变得(未经测试)

$(document).on('click', '.category-title [data-action=collapse]', fn)
另一答案

我强烈建议使用Angular-Bootstrap而不是vanilla javascript / jquery解决方案。

https://ng-bootstrap.github.io/#/home

该库提供了各种标准UI组件 - 选项卡式界面,下拉菜单,手风琴菜单等,所有这些都是具有完全TypeScript支持的原生Angular组件。

以上是关于为什么Jquery在角度7改变路线时不加载?的主要内容,如果未能解决你的问题,请参考以下文章

div的jQuery高度()在方向更改时不正确

角度2:在同一路线上重定向时再次重新加载同一组件

如何在不重新加载页面的情况下以角度 2 设置或删除当前路线中的 queryParams

在路线更改和新组件加载不起作用后以角度滚动到顶部

iecors - IE 8 + 9 中用于 CORS 的 jQuery 插件在页面首次加载时不起作用

角度 5 延迟加载与动态加载