Angular는 관찰자 객체에 가입하여 다양한 구성 요소의 데이터를 실시간으로 전달합니다.

2148 단어 rxjsangular5angular4
angular 공식 정의에서 구성 요소의 직접적인 데이터 교환은 부자가 직접 전달하기만 하면 된다. 그러나 우리는 프로젝트에서 각종 등급에서 데이터를 전달해야 한다. 다음은 구독 관찰 대상이 실현하는 데이터 전달에 대해 소개한다.
우선 서비스 앱을 정의합니다.sevice.ts, 서비스 내 new SubJect 객체:
// app.servie.ts
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs/Subject';
 
@Injectable()
export class AppService {
 
  constructor() { }
 
  sub = new Subject();
 
}

그리고 두 개의 구성 요소인 원치클과 투칠드를 앱에 정의합니다.compnent 표시:
// app.component.ts


그 중에서 원-child에는 키up을 연결하는 방법sendText:
// one-child.component.html

one-child works!


원치클에 앱을 주입합니다.서비스, sub 객체 호출:
import { Component } from '@angular/core';
import { AppService } from '../app.service'
 
@Component({
  selector: 'one-child',
  templateUrl: './one-child.component.html',
  styleUrls: ['./one-child.component.scss']
})
export class OneChildComponent {
 
  constructor(
    private appService: AppService
  ) { }
 
  sendText(value) {
    console.log("one-child: " + value);
    this.appService.sub.next(value);
  }
 
}

이 때 Two-child에서sub 대상을 구독하여 데이터를 얻습니다.
// two-child.component.ts
import { Component, OnInit } from '@angular/core';
import { AppService } from '../app.service'
  
@Component({
  selector: 'two-child',
  templateUrl: './two-child.component.html',
  styleUrls: ['./two-child.component.scss']
})
export class TwoChildComponent implements OnInit {
  
  value;
  constructor(
    private appService: AppService
  ) { }
  
  ngOnInit() {
    this.appService.sub.subscribe(res => {
      this.value = res;
      console.log("two-child: " + res);
    })
  }
}

최종적으로 원치클에 입력된 데이터가 투칠드에서도 수신되는 것을 볼 수 있다.
마지막으로 구독 대상에 대해 구성 요소가 삭제될 때 실제 상황에 따라 구독을 취소합니다.
ngOnDestroy() {
  this.appService.sub.unsubscribe();
}

demo는 아래 주소에서 체험을 다운로드할 수 있으며 다운로드 후 npm install를 실행합니다.https://github.com/ldpliudong...

좋은 웹페이지 즐겨찾기