상식닷컴
로그인
가입하기
2026년 상식닷컴 선정 식당 & 카페 리스트
2025년 2026년 신상 호텔 리스트
최근에 오픈한 호텔을 찾는다면 살펴보세요
일주일 식단표 어플
자동 일주일 식단표 어플
안드로이드
아이폰
주식 & 코인 차트의 신
1000만원으로 2000만원 만들기 프로젝트
궁금한 상식 보기
음성인식AI의 API 활용 사례는 어떤 것이 있나요?
웹서버구축을 위한 사이버 보안 모범 사례는 무엇인가요?
해킹 공부: 8가지 이유로 당신의 기술력을 키우자!
해킹 공부: 10가지 방법으로 커리어 발전을 이루다
해킹 공부: 보안 세계의 7가지 비밀
콤부차를 만들 때 주의해야 할 점은 무엇인가요?
냉동피자가 필요한 순간, 10가지 이유!
냉동피자, 특별한 날을 직관적으로 즐기는 4가지 방법!
실손의료보험, 지금 알아야 하는 10가지 이유!
실손의료보험을 통한 건강 관리 법칙, 8가지!
실비보험 의료비 보장 한도는?
건강검진 실비보험 청구 가이드, 의사 소견서 필요할까?
Previous
Next
수정하기 - 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순위입니다.
수정하기
취소하기