gpt4 book ai didi

Angular - 单击菜单项后隐藏侧边栏菜单

转载 作者:太空狗 更新时间:2023-10-29 17:07:18 24 4
gpt4 key购买 nike

我创建了侧边栏菜单,但在单击菜单项后无法隐藏菜单。我按照 https://blog.thecodecampus.de/angular-2-animate-creating-sliding-side-navigation/ 中的示例进行操作

我是否需要在(单击)来自 html 的每个超链接上调用 toggleMenu?如果是,我如何从另一个组件调用 app.component.ts 中的方法?

需要帮助...

我正在使用 Angular 4 和 bootstrap 4。

这是我的代码:应用程序组件.html:

<button (click)="toggleMenu()" class="hamburger">
<span>toggle menu</span>
</button>

<!-- <app-menu [@slideInOut]="menuState"></app-menu> -->
<navigation-component [@slideInOut]="menuState"> </navigation-component>

<div class="container-fluid">
<alert></alert>
<router-outlet></router-outlet>
</div>

导航.component.mobile.html:

    <li><a routerLink="/home" routerLinkActive="active"> Home</a></li>
<li>
<a href="#submenu1" data-toggle="collapse">Alert</a>
<ul id="submenu1" class="list-unstyled collapse">
<li><a routerLink="/linesidemonitor" data-toggle="collapse" data-target=".navbar-collapse.show">IQS Alert</a></li>
</ul>
</li>
<li routerLinkActive="active" [hidden]="!authenticated()">
<a href="#submenu2" data-toggle="collapse">Configuration</a>
<ul id="submenu2" class="list-unstyled collapse">
<li><a routerLink="/contact" data-toggle="collapse" data-target=".navbar-collapse.show">Contacts</a></li>
<li><a routerLink="/department" data-toggle="collapse" data-target=".navbar-collapse.show">Departments</a></li>
<li><a routerLink="/notificationlevel">NotificationLevels</a></li>
<li><a routerLink="/recipient">Recipients</a></li>
</ul>
</li>

应用程序组件.ts:

@Component({
selector: 'app-root',
templateUrl: './' + (window.innerWidth > 745 ?
'app.component.html' :
'app.component.mobile.html'),
styleUrls: ['./app.component.css'],
animations: [
trigger('slideInOut', [
state('in', style({
transform: 'translate3d(0, 0, 0)'
})),
state('out', style({
transform: 'translate3d(100%, 0, 0)'
})),
transition('in => out', animate('400ms ease-in-out')),
transition('out => in', animate('400ms ease-in-out'))
]),
]
})
toggleMenu() {
// 1-line if statement that toggles the value:
this.menuState = this.menuState === 'out' ? 'in' : 'out';
}

enter image description here

更新:

我试图调用 toggleMenu()。它正在工作,但页面正在再次加载。以前它曾经像 AJAX 调用(快速),但现在它就像一个新页面第一次加载。所以我需要关于如何做的帮助,就像在 http://parlaybuddy.razartech.com/no-auth 中所做的那样。

https://jmouriz.github.io/angular-material-multilevel-menu/demo/demo.html#!/demo/views/item-1-1

https://stackblitz.com/edit/dynamic-nested-sidenav-menu

导航.component.ts

toggleMenu() {
this.toggleMenu();
}

HTML:

       <ul id="submenu2" class="list-unstyled collapse">
<li><a class="submenu" routerLink="/contact" (click)="toggleMenu()">Contacts</a></li>
<li><a class="submenu" routerLink="/department" (click)="toggleMenu()">Departments</a></li>

解决方案:

正如 Santosh 提到的,我在 app.component.ts 中添加了以下代码,它按预期工作。谢谢桑托什

  constructor(private http: Http,
private router: Router,
public zone: NgZone) {
router.events.subscribe( (event: Event) => {
if (event instanceof NavigationStart) {
this.menuState = 'out';
}

if (event instanceof NavigationEnd) {
// Hide loading indicator
}

if (event instanceof NavigationError) {
// Hide loading indicator
// Present error to user
console.log(event.error);
}
});
}

最佳答案

您可以在路由器事件中处理它,并在路由更改时将 this.menuState 设置为 'out'

相当不错的示例代码 here

关于Angular - 单击菜单项后隐藏侧边栏菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51044114/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com