2017-12-29 16 views
0

각도 응용 프로그램 (v5)이 있습니다. 페이지 중 하나에는 두 개의 구성 요소 (A와 B)가 있습니다. 구성 요소 A에는 셀 클릭시 셀 값을 rxjs 제목으로 푸는 표가 있습니다. 해당 주제에 가입 된 컴포넌트 B는 그에 따라 컨텐츠를 새로 고칩니다. 이 흐름은 구성 요소 B가 다른 라우터 링크로 이동 될 때까지 예상대로 작동합니다.구성 요소를 다시로드 할 때 관찰 가능한 값 유지

두포를 보면 구성 요소 A에서 셀을 클릭하면 구성 요소 B가 실제로 구독 (다음) 처리기에서 변경되었음을 알 수 있음을 알 수 있습니다. 이때 컴포넌트 B는 아직 보이지 않습니다. 구성 요소 B가 라우터 링크를 통해 가시성을 갖게되면 클릭 UI는 주제의 값 (관찰 가능)을 반영하지 않습니다.

  1. '가시성'이 문제입니까?
  2. 라우터 링크를 클릭하면 구성 요소 B가 다시로드되고 주제에서 캡처 한 데이터가 손실됩니까?
  3. 피사체는 그러한 의사 소통을 원활하게하는 데 적합한 유형이 아닙니까? routerlink가 매개 변수를 가질 수 있다고 생각하지만 그것이 내가 필요한 것은 아닙니다. 주제에 대한 업데이트는 구성 요소 A 이외의 다른 출처에서 나올 수 있습니다. 구성 요소 B는 가시성을 확보 할 때마다 주제에서 최신 정보를 반영해야합니다.
  4. 크로스 구성 요소 비동기 통신을 구현하는 올바른 방법은 무엇입니까?
+1

도움이 될 것입니다 희망 구성 요소 A.

에 의해 emited 마지막 값을받을 것인가? 나는 세부 사항에 대해 명확하지 않으며 일부 코드를 보는 데 도움이 될 것입니다. 일반적으로 Subject는 항목이 제공 될 때만 항목을 방출합니다. BehaviorSubject는 구독시 가장 최근 항목을 방출합니다. 여기에서 찾을 수있는 다른 유형의 주제도 있습니다. http://reactivex.io/documentation/subject.html – DeborahK

+0

하나를 만들려고합니다. 나는 일상 코스를보고 있었고 어떤 단서를 찾기를 바랬다! – casbby

+0

다른 주체 유형에 대한 제안을 주셔서 감사합니다. 그것은 실제로 내 문제를 고쳤다. – casbby

답변

1

이 시나리오에서는 BehaviourSubject를 사용해야합니다. BehaviourSubject는 마지막 가치를냅니다. 당신이 구성 요소 B에 가입 할 때 그래서 당신은 당신의 문제를 데모 버튼 plunker 또는 stackblitz을 할 수는

관련 문제