Angular 5에서 URL 쿼리 매개변수를 가져오는 방법

2024-07-27

Angular 5에서 URL 쿼리 매개변수를 가져오는 방법

ActivatedRoute를 사용하여 쿼리 매개변수 가져오기

  1. 컴포넌트 클래스에 ActivatedRoute를 주입합니다.
import { ActivatedRoute } from '@angular/router';

export class MyComponent {
  constructor(private route: ActivatedRoute) { }

  ngOnInit() {
    // 쿼리 매개변수를 가져옵니다.
    const params = this.route.snapshot.queryParams;

    // 특정 쿼리 매개변수 값을 가져옵니다.
    const id = params['id'];

    // 쿼리 매개변수가 없는 경우 기본값을 설정합니다.
    const name = params['name'] || '기본 이름';
  }
}

Location 서비스를 사용하여 쿼리 매개변수 가져오기

  1. 컴포넌트 클래스에 Location 서비스를 주입합니다.
import { Location } from '@angular/common';

export class MyComponent {
  constructor(private location: Location) { }

  ngOnInit() {
    // URL에서 쿼리 문자열을 가져옵니다.
    const search = this.location.search;

    // 쿼리 문자열을 파싱하여 쿼리 매개변수 객체를 만듭니다.
    const params = new URLSearchParams(search);

    // 특정 쿼리 매개변수 값을 가져옵니다.
    const id = params.get('id');

    // 쿼리 매개변수가 없는 경우 기본값을 설정합니다.
    const name = params.get('name') || '기본 이름';
  }
}

추가 정보

참고:

  • ActivatedRoute를 사용하는 방법은 컴포넌트가 라우팅된 경우에만 사용할 수 있습니다.
  • Location 서비스를 사용하는 방법은 컴포넌트가 라우팅된 경우와 그렇지 않은 경우 모두 사용할 수 있습니다.

예시:

<a [routerLink]="['/my-route', { queryParams: { id: 1, name: 'John' } }]">
  링크
</a>

이 예시에서 MyComponent는 다음과 같이 쿼리 매개변수를 가져올 수 있습니다.

export class MyComponent {
  constructor(private route: ActivatedRoute) { }

  ngOnInit() {
    const params = this.route.snapshot.queryParams;
    const id = params['id'];
    const name = params['name'];
  }
}



예제 코드

import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';

@Component({
  selector: 'my-component',
  templateUrl: './my-component.component.html',
})
export class MyComponent implements OnInit {
  id: number;
  name: string;

  constructor(private route: ActivatedRoute) {}

  ngOnInit() {
    // 쿼리 매개변수를 가져옵니다.
    const params = this.route.snapshot.queryParams;

    // 특정 쿼리 매개변수 값을 가져옵니다.
    this.id = params['id'];
    this.name = params['name'] || '기본 이름';
  }
}
<h1>{{ id }}</h1>
<h2>{{ name }}</h2>

사용 방법:

  1. app.module.ts 파일에 MyComponent를 등록합니다.
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RouterModule } from '@angular/router';

import { AppComponent } from './app.component';
import { MyComponent } from './my-component/my-component.component';

@NgModule({
  declarations: [
    AppComponent,
    MyComponent
  ],
  imports: [
    BrowserModule,
    RouterModule.forRoot([
      { path: 'my-route', component: MyComponent }
    ])
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }
  1. 브라우저에서 http://localhost:4200/my-route?id=1&name=John 주소로 이동합니다.

결과:

<h1>1</h1>
<h2>John</h2>
  • 이 예시는 ActivatedRoute를 사용하여 쿼리 매개변수를 가져오는 방법을 보여줍니다.
  • Location 서비스를 사용하여 쿼리 매개변수를 가져오는 방법은 위의 설명을 참조하십시오.



대체 방법

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

export class MyComponent {
  constructor(private location: Location) { }

  ngOnInit() {
    // URL에서 쿼리 문자열을 가져옵니다.
    const search = this.location.search;

    // 쿼리 문자열을 파싱하여 쿼리 매개변수 객체를 만듭니다.
    const params = new URLSearchParams(search);

    // 특정 쿼리 매개변수 값을 가져옵니다.
    const id = params.get('id');

    // 쿼리 매개변수가 없는 경우 기본값을 설정합니다.
    const name = params.get('name') || '기본 이름';
  }
}

RxJS를 사용하여 쿼리 매개변수 가져오기

import { ActivatedRoute } from '@angular/router';
import { Observable } from 'rxjs';

export class MyComponent {
  constructor(private route: ActivatedRoute) { }

  ngOnInit() {
    // 쿼리 매개변수를 Observable로 가져옵니다.
    const params$: Observable<any> = this.route.queryParams;

    // Observable을 구독하여 쿼리 매개변수 값을 가져옵니다.
    params$.subscribe(params => {
      const id = params['id'];
      const name = params['name'] || '기본 이름';
    });
  }
}
  • 위의 방법들은 ActivatedRoute를 사용하는 방법보다 더 복잡합니다.
  • ActivatedRoute를 사용하는 방법으로 쿼리 매개변수를 가져오는 것이 가장 일반적입니다.
import { Component, OnInit } from '@angular/core';
import { Location } from '@angular/common';

@Component({
  selector: 'my-component',
  templateUrl: './my-component.component.html',
})
export class MyComponent implements OnInit {
  id: number;
  name: string;

  constructor(private location: Location) {}

  ngOnInit() {
    // URL에서 쿼리 문자열을 가져옵니다.
    const search = this.location.search;

    // 쿼리 문자열을 파싱하여 쿼리 매개변수 객체를 만듭니다.
    const params = new URLSearchParams(search);

    // 특정 쿼리 매개변수 값을 가져옵니다.
    this.id = params.get('id');
    this.name = params.get('name') || '기본 이름';
  }
}

HTML:

<h1>{{ id }}</h1>
<h2>{{ name }}</h2>
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';

import { AppComponent } from './app.component';
import { MyComponent } from './my-component/my-component.component';

@NgModule({
  declarations: [
    AppComponent,
    MyComponent
  ],
  imports: [
    BrowserModule
  ],
  providers: [],
  bootstrap: [AppComponent]
})
export class AppModule { }
<h1>1</h1>
<h2>John</h2>

angular typescript angular-routing



타입스크립트에서 클래스 유형 검사

클래스 유형 검사는 타입스크립트에서 클래스의 인스턴스가 올바른 유형인지 확인하는 데 사용되는 프로세스입니다. 이는 다음과 같은 여러 가지 방법으로 수행될 수 있습니다.인터페이스 사용: 인터페이스는 클래스의 속성과 메서드에 대한 정의를 제공하는 객체입니다...


TypeScript에서의 Get과 Set

Getter는 객체의 속성 값을 반환하는 메서드입니다. 일반적인 프로퍼티 접근과 동일하게 obj. propertyName 형식으로 호출됩니다. 하지만 getter를 사용하면 값을 반환하기 전에 추가적인 작업을 수행할 수 있습니다...


TypeScript에서 'The property 'value' does not exist on value of type 'HTMLElement'' 오류 해결하기

이 오류는 TypeScript 코드에서 HTMLElement 객체에 value 속성을 접근하려고 할 때 발생합니다. 하지만 HTMLElement 기본 타입에는 value 속성이 정의되어 있지 않기 때문에 오류가 발생합니다...


타입스크립트에서 콜백 함수 타입 정의하기

코드 오류 감소: 컴파일러가 콜백 함수의 인수와 반환 값 타입을 검사하여 오류를 미리 방지합니다.코드 가독성 향상: 콜백 함수의 역할과 사용법을 명확하게 이해할 수 있습니다.코드 재사용성 증대: 동일한 타입의 콜백 함수를 여러 곳에서 재사용할 수 있습니다...


TypeScript에서 인터페이스 파일 정의를 기반으로 객체 만들기

인터페이스 파일 정의를 기반으로 객체를 만드는 방법은 다음과 같습니다.1. 인터페이스 정의먼저, 객체의 구조를 정의하는 인터페이스를 작성해야 합니다. 인터페이스는 interface 키워드를 사용하여 정의되며, 속성 이름과 데이터 형식을 쌍으로 지정합니다...



angular typescript routing

자바스크립트와 타입스크립트: 비교 및 선택 가이드

반면 타입스크립트는 자바스크립트의 슈퍼셋으로, 자바스크립트의 기능에 정적 타입 시스템을 추가한 언어입니다. 즉, 타입스크립트 코드는 자바스크립트 엔진에서 실행될 수 있으며, 추가적인 타입 정보를 제공함으로써 코드의 안정성과 유지보수성을 향상시킵니다


타입스크립트에서의 생성자 오버로딩

예시:주요 특징:매개변수 구분: 생성자는 매개변수의 개수와 타입에 따라 구분됩니다.타입 안전: 타입스크립트는 각 생성자의 매개변수와 반환값에 대한 타입을 명시적으로 정의해야 하므로 코드 오류를 방지하는 데 도움이 됩니다


타입스크립트에서 window에 새 속성을 명시적으로 설정하는 방법

첫 번째 방법은 Window 인터페이스를 확장하여 새 속성을 정의하는 것입니다. 다음은 예제입니다.이 코드는 Window 인터페이스에 myProperty라는 문자열 속성을 추가합니다. 이렇게 하면 TypeScript 컴파일러가 window


타입스크립트에서 객체에 동적으로 속성을 할당하는 방법

인터페이스를 사용하면 객체의 구조를 정의할 수 있습니다. 인터페이스에는 속성 이름, 타입, 선택적 여부 등을 포함할 수 있습니다.위 코드는 Person이라는 인터페이스를 정의하며, name 속성은 문자열이고 age 속성은 숫자라는 것을 의미합니다


TypeScript에서 객체 리터럴의 타입 정의

객체 리터럴의 타입을 정의하는 두 가지 주요 방식이 있습니다.1.1 인터페이스 사용:인터페이스는 객체의 구조를 정의하는 명시적 방법입니다. 인터페이스를 사용하여 객체 리터럴의 속성 이름, 타입, 선택적 속성 등을 명시할 수 있습니다