경로 매개 변수와 쿼리 매개 변수
경로 매개변수를 읽고 이에 반응합니다.
경로 매개 변수와 쿼리 매개 변수은(는) CoddyKit의 무료 Angular Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Angular Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Angular Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
경로 매개변수와 쿼리 매개변수
경로 매개변수는 경로의 일부입니다(/user/42). 쿼리 매개변수는 ? 뒤에 추가됩니다(/search?q=ng&page=2). 라우터를 사용하면 두 매개변수에 반응형으로 접근할 수 있습니다.
경로 매개변수 정의
경로에 콜론을 사용하여 매개변수를 선언하세요.
export const routes = [
{ path: 'user/:id', component: UserComponent }
];paramMap으로 매개변수 읽기
ActivatedRoute.paramMap은 경로 매개변수가 변경될 때마다 값을 방출하는 옵저버블입니다. .get()을 사용하여 값을 읽으세요.
import { inject } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
const route = inject(ActivatedRoute);
route.paramMap.subscribe(params => {
const id = params.get('id');
console.log('user id', id);
});매개변수를 관찰하는 이유
/user/1에서 /user/2로 이동할 때 컴포넌트가 재사용될 수 있습니다. 생성자는 한 번만 실행되지만 paramMap은 다시 값을 방출하므로, 변경에 반응하려면 구독해야 합니다.
한 번만 읽을 때 사용하는 스냅샷
컴포넌트가 다른 매개변수에 대해 재사용되지 않는다면 스냅샷을 동기적으로 읽을 수 있습니다.
const id = route.snapshot.paramMap.get('id');
// only valid if the route param will not change
// while this component instance is alivequeryParamMap으로 쿼리 매개변수 읽기
queryParamMap은 쿼리 문자열의 값을 옵저버블 형태로 제공합니다.
route.queryParamMap.subscribe(qp => {
const page = Number(qp.get('page') ?? '1');
const q = qp.get('q') ?? '';
console.log(q, page);
});쿼리 매개변수를 사용한 이동
router.navigate의 queryParams 옵션이나 routerLink 지시문을 사용하세요.
import { Router } from '@angular/router';
const router = inject(Router);
router.navigate(['/search'], {
queryParams: { q: 'angular', page: 2 }
});쿼리 매개변수 유지
queryParamsHandling: 'merge'는 일부 매개변수를 업데이트하면서 기존 매개변수를 유지하고, 'preserve'는 이동할 때 기존 매개변수를 그대로 전달합니다.
router.navigate(['/search'], {
queryParams: { page: 3 },
queryParamsHandling: 'merge'
});컴포넌트 입력 바인딩(최신 방식)
withComponentInputBinding()을 사용하면 경로 및 쿼리 매개변수를 컴포넌트의 @Input()(또는 입력 신호)에 직접 바인딩하여 ActivatedRoute를 건너뛸 수 있습니다.
// in provideRouter(routes, withComponentInputBinding())
export class UserComponent {
@Input() id!: string; // bound from /user/:id
}반복되는 매개변수를 위한 getAll
쿼리 키가 여러 번 나타날 수 있다면 getAll()을 사용하세요. 예를 들면 ?tag=a&tag=b와 같습니다.
route.queryParamMap.subscribe(qp => {
const tags = qp.getAll('tag'); // ['a', 'b']
console.log(tags);
});데이터 로딩과 매개변수 결합
일반적인 패턴은 매개변수를 switchMap을 사용한 HTTP 호출로 매핑하여 id가 변경될 때 데이터를 다시 가져오는 것입니다.
route.paramMap.pipe(
switchMap(p => this.http.get('/api/user/' + p.get('id')))
).subscribe(user => console.log(user));빠른 확인
경로 매개변수에 대한 이해도를 확인해 보세요.
복습: 경로 및 쿼리 매개변수
라우터는 매개변수에 반응형으로 접근할 수 있도록 합니다.
paramMap: 경로 매개변수이며, 재사용에 대비해 관찰합니다.queryParamMap: 쿼리 문자열이며, 반복 값에는getAll을 사용합니다.snapshot: 한 번만 읽을 때 사용합니다.withComponentInputBinding(): 매개변수를 입력에 바인딩합니다.
다음 주제: 리졸버와 경로 데이터
자주 묻는 질문
“경로 매개 변수와 쿼리 매개 변수” 강의는 무료인가요?
네 — “경로 매개 변수와 쿼리 매개 변수” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Angular Academy 강의 전체를 잠금 해제할 수 있습니다. Angular Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“경로 매개 변수와 쿼리 매개 변수”에서 뭘 배우나요?
경로 매개변수를 읽고 이에 반응합니다. 브라우저에서 직접 실행하는 실습 코드로 Angular Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Angular Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Angular Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“경로 매개 변수와 쿼리 매개 변수” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Angular Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Angular Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 경로 매개 변수와 쿼리 매개 변수
- 리졸버와 경로 데이터
- 함수형 경로 가드
- 라우터 이벤트와 탐색