Javascript 路由器事件导致页面刷新某些功能失败
我想在除主页外的所有页面中显示HambergerMenu图标。代码为:Javascript 路由器事件导致页面刷新某些功能失败,javascript,angular,angular-router,Javascript,Angular,Angular Router,我想在除主页外的所有页面中显示HambergerMenu图标。代码为: constructor( private router: Router){ this.router.events .subscribe((event) => { let _url = window.location.href, urlArr: any; console.log(_url); urlArr = _url.split('/').indexOf('home
constructor( private router: Router){
this.router.events
.subscribe((event) => {
let _url = window.location.href, urlArr: any;
console.log(_url);
urlArr = _url.split('/').indexOf('home');
this._showHamburger = (urlArr < 0) ? true : false;
});
}
如果我们从任何页面导航到当前页面,上面的代码都可以正常工作。似乎我们必须从某个地方导航。但在页面刷新上,上述功能失败。我需要总结的任何东西???最好是使用该服务: 更好的做法是不使用subscribe,而是在组件中使用异步管道。这将处理任何需要的取消订阅:
readonly showHamburger: Observable<boolean>;
constructor(private route: ActivatedRoute) {
this.showHamburger = route.url.pipe(
map((urls) => urls.every((url) => !url.path.includes('home'))
);
}
然后,您可以按如下方式制作模板:
<div *ngIf="showHamburger | async" class="hamburger">I'm a hamburger</div>
我认为创建一个新组件是最好的主意
最好的方法是创建一个新组件并添加HambergerMenu图标的代码
使用以下命令创建新组件:
在所有需要的页面上使用类似的选择器,不要在hope上添加此选项我收到错误:“Property”includes“type”UrlSegment上不存在”。tsconfig.json中的lib是-lib:[es2017,dom],@AsridhKumar我已经更新了我的答案,应该是url.path.includes
<div *ngIf="showHamburger | async" class="hamburger">I'm a hamburger</div>
ng g c Hamberger