Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 路由器事件导致页面刷新某些功能失败_Javascript_Angular_Angular Router - Fatal编程技术网

Javascript 路由器事件导致页面刷新某些功能失败

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

我想在除主页外的所有页面中显示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');
    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