반응형
Angular에서 현재 URL 가져 오기
Angular 4에서 현재 URL을 어떻게 얻을 수 있습니까? 웹에서 많이 검색했지만 해결책을 찾을 수 없습니다.
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() { }
}
지금 다른 링크를 클릭하면 콘솔 문제가 발생 합니다.
ERROR Error: Uncaught (in promise): Error: No provider for Router!
순수 JavaScript 사용 :
console.log(window.location.href)
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);
}
}
Plunkr는 여기에 있습니다 : https://plnkr.co/edit/0x3pCOKwFjAGRxC4hZMy?p=preview
@ angular / common에서 사용 가능한 위치 서비스를 사용할 수 있으며 아래 코드를 통해 위치 또는 현재 URL을 얻을 수 있습니다.
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() {
}
}
here is the reference link from where I have copied thing to get location for my project. https://github.com/elliotforbes/angular-2-admin/blob/master/src/app/common/top-nav/top-nav.component.ts
other.component.ts
So final correct solution is :
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);
}
}
참고URL : https://stackoverflow.com/questions/45184969/get-current-url-in-angular
반응형
'programing' 카테고리의 다른 글
flex : 1은 무엇을 의미합니까? (0) | 2020.08.28 |
---|---|
BOOL의 기본값 (0) | 2020.08.28 |
Moq를 사용하여 ASP.NET MVC에서 HttpContext를 어떻게 모의합니까? (0) | 2020.08.27 |
OperationCanceledException과 TaskCanceledException의 차이점은 무엇입니까? (0) | 2020.08.27 |
JAXB 2의 ObjectFactory 클래스의 요점은 무엇입니까? (0) | 2020.08.27 |