Angular 2获取当前路线

时间:2017-03-01 17:29:33

标签: angular typescript routes angular2-routing

所以我需要以某种方式检查我是否在主页并做某事,而在其他页面中不要这样做。该组件也在所有页面上导入。

如果我在主页???

,如何检测该组件?

由于

7 个答案:

答案 0 :(得分:39)

试试这个,

import { Router } from '@angular/router';
export class MyComponent implements OnInit {

    constructor(private router:Router) { ... }

    ngOnInit() {
        let currentUrl = this.router.url; /// this will give you current url

        // your logic to know if its my home page.
    }

}

答案 1 :(得分:32)

试试吧

import { Component } from '@angular/core';
import { Router, NavigationEnd } from '@angular/router';

@Component({...})

export class MyComponent {

  constructor(private router:Router) {

    router.events.subscribe(event => {

      if (event instanceof NavigationEnd ) {
        console.log("current url",event.url); // event.url has current url
        // your code will goes here
      }
    });
  }
}

答案 2 :(得分:3)

从本机窗口对象中尝试其中任何一个。

console.log('URL:' + window.location.href);
console.log('Path:' + window.location.pathname);
console.log('Host:' + window.location.host);
console.log('Hostname:' + window.location.hostname);
console.log('Origin:' + window.location.origin);
console.log('Port:' + window.location.port);
console.log('Search String:' + window.location.search);

注意:请勿在服务器端RENDERING中使用

答案 3 :(得分:0)

如果需要完整的URL,请按以下方式使用LOCATION实例:-

([Location][1])location.href = https://test-mydomain.com/#/securelogin?name=batman

&如果您想要相对URL,请使用ROUTER实例,请按照以下步骤操作:-

this.router.url = securelogin?name=batman

按照角度4:-遵循以下完整代码段:

constructor( private router: Router) {
  console.log(this.router.url);
/**
* securelogin?name=batman
*/

  console.log(location.href);
/**
* https://test-mydomain.com/#/securelogin?name=batman
*/
}

答案 4 :(得分:0)

我正要回答这个问题,但是我与BigBrother的回答相同。该答案适用于在其URL上使用“#”的用户,因为该URL仅在某些路由器位置代码上返回“ /”。

这是我的一个项目的示例代码:

this.router.events.subscribe((event)  => {
  if(event instanceof NavigationEnd) {
      this.currentPage =  event.url;
      if ( event.url != '/admin') {
        setTimeout(()=>{
            this.modalRef = this.modalService.show(ModalSurveyComponent,this.config);
        }, 3000);
      }
  }
});

因此,仅当当前路由不是“ / admin”时,才会显示弹出窗口

答案 5 :(得分:0)

您可以使用Angular Location Service。

import { Location } from '@angular/common';

您可以使用以下路径访问路径:

location.path();

答案 6 :(得分:-3)

import { RouterStateSnapshot } from '@angular/router';

constructor(private state: RouterStateSnapshot) {
    console.log("Current Url Path", state);
}