web-dev-qa-db-ja.com

Angular 2現在のルートを取得

だから、私はホームページにいて何かをしていて、他のページではそれをしていないかどうかを何らかの形で確認する必要があります。また、そのコンポーネントはすべてのページにインポートされました。

ホームページにいる場合、どのようにしてそのコンポーネントを検出できますか?

ありがとう

14
Aram Mkrtchyan

これを試して、

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.
    }

}
39
Vivek Singh

それを試してみてください

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
      }
    });
  }
}
33
Pankaj Anupam

ネイティブウィンドウオブジェクトからこれらのいずれかを試してください。

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);

注:サーバー側のレンダリングでこれを使用しないでください

3
Sanket Berde

Angular Location Serviceを使用できます。

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

以下を使用してパスにアクセスできます。

location.path();
1
Sarat Chandra

この質問に答えようとしていましたが、BigBrotherでも同じ答えがあります。この回答は、一部のルーターロケーションコードで「/」のみを返すため、URLで「#」を使用するユーザー向けです。

これは私のプロジェクトの1つのサンプルコードです。

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」でない場合にのみポップアップが表示されます

0
CJ Zetroc

完全なURLが必要な場合は、次のようにLOCATIONインスタンスを使用します。

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

&相対URLが必要な場合は、ROUTERインスタンスを使用します:-

this.router.url = securelogin?name=batman

angular 4:-に基づいて、次のように完全なスニペットに従ってください。

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

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