상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
수정하기 - switchMap을 사용한 폼 서브밋 예시는 무엇인가요?
닉네임
비밀번호
제목
내용
[이미지 업로드는 권한이 있는 사람만 가능. 하단 카톡으로 연락]
switchMap을 사용한 폼 서브밋 예시는 Angular나 RxJS 환경에서 자주 사용하는 패턴입니다. switchMap은 소스 Observable에서 새로운 이벤트가 들어올 때마다 이전 Observable을 취소하고 새로운 Observable로 전환해 주기 때문에, 폼을 제출할 때 중복 요청을 방지하거나, 최신 요청 결과만 받고 싶을 때 매우 유용합니다. 아래는 Angular에서 Reactive Forms와 RxJS switchMap 연산자를 활용해 폼 제출을 처리하는 대표적인 예시입니다. --- 예시 상황 - 사용자 이름을 입력하는 폼이 있다. - 폼이 제출되면 서버에 A<a href='https://sangseek.com/sangseeks/PI 호출/ko'>PI 호출</a>을 하여 사용자 이름의 중복 여부를 체크하거나, 사용자 데이터를 저장한다. - 폼이 중복으로 제출되는 것을 방지하고, 가장 최근 제출 요청만 서버에 보내고 싶다. --- 코드 예시 ```typescript import { Component, OnInit } from '@angular/core'; import { FormBuilder, FormGroup } from '@angular/forms'; import { of, Subject } from 'rxjs'; import { switchMap, tap, catchError } from 'rxjs/operators'; import { HttpClient } from '@angular/common/http'; <a href='https://sangseek.com/sangseeks/@Component/ko'>@Component</a>({ selector: 'app-user-form', template: ` <form [formGroup]="userForm" (ngSubmit)="onSubmit()"> <input formControlName="username" placeholder="Enter username" /> <button type="submit">Submit</button> </form> <div *ngIf="message">{{ message }}</div> ` }) export class UserFormComponent implements OnInit { userForm: FormGroup; private submit$ = new Subject<string>(); message: string; constructor(private fb: FormBuilder, private http: HttpClient) {} ngOnInit() { this.userForm = this.fb.group({ username: [''] }); // submit$ 스트림에 입력된 username 값을 switchMap을 써서 API 호출에 활용 this.submit$.pipe( switchMap(username => this.http.post('/api/check-username', { username }).pipe( tap(() => { this.message = `Username "${username}" is available`; }), catchError(err => { this.message = `Error occurred: ${err.message}`; return of(null); // 에러가 나도 스트림이 끊기지 않도록 null 값을 반환 }) ) ) ).subscribe(); } // 폼 제출 시 username 값을 submit$에 next함 onSubmit() { const username = this.userForm.get('username').value; this.submit$.next(username); } } ``` --- 설명 1. 제출 스트림 생성 `submit$`라는 `Subject`를 이용해 폼 제출 이벤트를 스트림으로 만듭니다. 2. switchMap 처리 `submit$`에 새로운 값(사용자가 입력한 username)이 들어올 때마다 이전 API 호출은 취소되고, 새로운 API 호출이 시작됩니다. - 예를 들어 사용자가 연속해서 빠르게 폼을 제출하면, 첫 번째 요청은 취소되고 마지막 요청만 서버에 전송됩니다. 3. 에러 처리 및 메시지 출력 API 호출 성공/실패 시 적절한 메시지를 `message` 변수에 설정해 사용자에게 피드백을 제공합니다. 4. 폼 바인딩과 제출 템플릿에 Reactive Form을 바인딩하고, `(ngSubmit)` 이벤트가 발생했을 때 `onSubmit()` 메소드가 호출되어 username을 `submit$` 스트림에 보냅니다. --- 요약 - `switchMap`은 이전 Observable이 완료되지 않았더라도 새 Observable로 전환할 때 이전 요청을 취소하는 효과가 있기 때문에, 중복 제출 방지와 같은 상황에 적합합니다. - 폼 제출 이벤트를 Observable 스트림(Subject 등)으로 만들어 `switchMap`으로 API 호출을 처리하면, 복잡한 비동기 흐름을 관리하기 쉽습니다. - Angular Reactive Forms와 RxJS 연산자를 함께 사용하면 사용자 인터랙션을 선언적이고 반응적으로 처리할 수 있습니다. --- 이와 같은 패턴을 통해 사용자 경험을 개선하고, 서버 리소스를 효율적으로 사용할 수 있습니다.
이용안내
커뮤니티 이용안내
×
- 게시한 게시글로 발생하는 문제는 게시자에게 책임이 있습니다.
- 게시글이 타인/타업체의 저작권을 침해할 경우 모든 책임은 게시자에게 있습니다. 게시자가 모든 손해를 부담해야 합니다.
- 상식닷컴 운영자는 게시자와 상의하지 않고 게시글을 수정 또는 삭제할 수 있습니다.
- 상식닷컴 운영자는 깨끗한 커뮤니티 공간을 만드는 것이 1순위입니다.
수정하기
취소하기