Angular의 RxJS 선언적 패턴

이것은 RxJS와 함께 Angular에서 선언적 패턴을 사용하는 방법에 대한 간단한 요약입니다.

전체 게시물에 관심이 있으시면 Medium에서 RxJS Declarative Pattern in Angular을 읽어보세요.

이 게시물을 최대한 활용하려면 Angular , RxJSobservables 에 대해 잘 알고 있어야 합니다.

RxJS는 코드를 선언적으로 만들지 않습니다.



RxJS를 사용한다고 해서 코드가 선언적이지는 않습니다. 실제로 subscribe() 메서드를 사용하는 즉시 명령형이 됩니다!

이러한 이유로 우리는 의도적으로 선언적이어야 합니다.

1단계: 서비스 생성



변수todo$를 선언하는 서비스를 생성하여 시작하겠습니다.

달러 기호는 변수가 실제 데이터가 아니라 Observable임을 나타내는 규칙입니다.




URL에서 오는 데이터는



  • 파이프를 통과함
  • RxJS tap operator을 통과했습니다.
  • todo$에 저장됨


하지만 이것만 해보면 아무 일도 일어나지 않습니다!

콘솔에 아무 것도 표시되지 않습니다.


2단계: Observable을 지역 변수에 할당



구성요소로 이동해 보겠습니다.




<script id="gist-ltag"src="https://gist.github.com/lorenzojkrl/1db084e45f4b098a91e6eccb9f6b560d.js"/>


여기서 핵심 라인은 10번째 줄입니다.




data$ = this.todoService.todo$;


data$라는 지역 변수를 정의했습니다. 서비스의 관찰 가능 항목을 변수에 할당하여 구성 요소에서 사용할 수 있도록 합니다.



Angular에게 구독 또는 구독 취소를 지시하는 것이 아닙니다! 우리는 관찰자조차 보고 있지 않습니다! 진정한 선언적 스타일이 빛을 발하는 곳입니다.



결국 템플릿에 일부 데이터만 표시하려고 합니다. 그것이 우리의 목표입니다. Angular가 그것을 달성하는 방법은 우리의 일이 아닙니다.



다시한번 말씀드리지만 이것만 하시면 아무일도 일어나지 않습니다!

템플릿의 콘솔에는 아무 것도 표시되지 않습니다.



우리의 목표가 무엇인지 Angular에 알리지 않았기 때문에 이치에 맞습니다!


3단계: 비동기 파이프와 함께 로컬 변수 사용



템플릿으로 이동해 보겠습니다.

여기에서 Angular에게 수행해야 할 작업을 알려줍니다. 데이터를 사용할 수 있을 때 템플릿에 개체의 제목을 표시합니다.



그렇게 하기 위해 비동기 파이프를 사용합니다.

비동기 파이프는 아래와 같이 자동으로 구독 및 구독 취소합니다.




// app.component.html
<div *ngIf="data$ | async as data">
  {{ data.title }}
</div>


<올>
  • 먼저 구성 요소에서 data$에 바인딩합니다.
  • 둘째, 비동기 파이프를 사용하여 data$를 자동으로 구독 및 구독 취소합니다.
  • 셋째, as data를 사용하여 observable의 값을 호스트할 변수를 정의합니다.
  • 마지막으로 이전과 마찬가지로 템플릿 전체에서 데이터를 사용할 수 있습니다.


  • 이 접근 방식과 고전적인 명령형 접근 방식 간의 보다 포괄적인 예와 비교는 MediumRxJS Declarative Pattern in Angular에서 볼 수 있습니다.



    여러분의 의견을 들려주세요!

    좋은 웹페이지 즐겨찾기