route current change actual javascript angular typescript url-routing

javascript - current - Obtener URL actual en angular



get actual url angular 2 (3)

Esta pregunta ya tiene una respuesta aquí:

¿Cómo puedo obtener la url actual en Angular 4? Lo he buscado mucho en la web, pero no puedo encontrar la solución.

app.module.ts

import { BrowserModule } from ''@angular/platform-browser''; import { NgModule } from ''@angular/core''; import { RouterModule, Router } from ''@angular/Router''; import { AppComponent } from ''./app.component''; import { TestComponent } from ''./test/test.component''; import { OtherComponent } from ''./other/other.component''; import { UnitComponent } from ''./unit/unit.component''; @NgModule ({ declarations: [ AppComponent, TestComponent, OtherComponent, UnitComponent ], imports: [ BrowserModule, RouterModule.forRoot([ { path: ''test'', component: TestComponent }, { path: ''unit'', component: UnitComponent }, { path: ''other'', component: OtherComponent } ]), ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }

app.component.html

<!-- The content below is only a placeholder and can be replaced --> <div> <h1>Welcome to {{title}}!!</h1> <ul> <li> <a routerLink="/test">Test</a> </li> <li> <a routerLink="/unit">Unit</a> </li> <li> <a routerLink="/other">Other</a> </li> </ul> </div> <br/> <router-outlet></router-outlet>

app.component.ts

import { Component} from ''@angular/core''; @Component ({ selector: ''app-root'', templateUrl: ''./app.component.html'', styleUrls: [''./app.component.css''] }) export class AppComponent{ title = ''Angular JS 4''; arr = [''abcd'',''xyz'',''pqrs'']; }

other.component.ts

import { Component, OnInit } from ''@angular/core''; import { Location } from ''@angular/common''; import { Router } from ''@angular/router''; @Component({ selector: ''app-other'', templateUrl: ''./other.component.html'', styleUrls: [''./other.component.css''] }) export class OtherComponent implements OnInit { public href: string = ""; url: string = "asdf"; constructor(private router : Router) {} ngOnInit() { this.href = this.router.url; console.log(this.router.url); } }

test.component.ts

import { Component, OnInit } from ''@angular/core''; import { Location } from ''@angular/common''; import { Router } from ''@angular/router''; @Component({ selector: ''app-test'', templateUrl: ''./test.component.html'', styleUrls: [''./test.component.css''] }) export class TestComponent implements OnInit { route: string; currentURL=''''; constructor() { this.currentURL = window.location.href; } ngOnInit() { } }

En este momento tengo un problema con la consola después de hacer clic en otro enlace

ERROR Error: Uncaught (in promise): Error: No provider for Router!


Con JavaScript puro:

console.log(window.location.href)

Usando angular:

this.router.url

import { Component } from ''@angular/core''; import { Router } from ''@angular/router''; @Component({ template: ''The href is: {{href}}'' /* Other component settings */ }) export class Component { public href: string = ""; constructor(private router: Router) {} ngOnInit() { this.href = this.router.url; console.log(this.router.url); } }

El plunkr está aquí: plnkr.co/edit/0x3pCOKwFjAGRxC4hZMy?p=preview


Puede utilizar el servicio de ubicación disponible en @ angular / common y a través de este código a continuación puede obtener la ubicación o la URL actual

import { Component, OnInit } from ''@angular/core''; import { Location } from ''@angular/common''; import { Router } from ''@angular/router''; @Component({ selector: ''app-top-nav'', templateUrl: ''./top-nav.component.html'', styleUrls: [''./top-nav.component.scss''] }) export class TopNavComponent implements OnInit { route: string; constructor(location: Location, router: Router) { router.events.subscribe((val) => { if(location.path() != ''''){ this.route = location.path(); } else { this.route = ''Home'' } }); } ngOnInit() { } }

Aquí está el enlace de referencia desde donde he copiado algo para obtener la ubicación de mi proyecto. https://github.com/elliotforbes/angular-2-admin/blob/master/src/app/common/top-nav/top-nav.component.ts


other.component.ts

Entonces la solución correcta final es:

import { Component, OnInit } from ''@angular/core''; import { Location } from ''@angular/common''; import { Router } from ''@angular/router''; /* ''router'' it must be in small case */ @Component({ selector: ''app-other'', templateUrl: ''./other.component.html'', styleUrls: [''./other.component.css''] }) export class OtherComponent implements OnInit { public href: string = ""; url: string = "asdf"; constructor(private router : Router) {} // make variable private so that it would be accessible through out the component ngOnInit() { this.href = this.router.url; console.log(this.router.url); } }