2017-11-22 18 views
0

나는이 작업을 수행 할 수 있도록 몇 가지 규칙이나 제안하고 싶은 :하위 구성 요소에서 응용 프로그램 수준에서 경고를 표시하는 방법

나는 일이 일어나고있는 때 표시 할 응용 프로그램 수준에서 경고를 가지고 내 구성 요소 중 하나 (예 : 정보 저장 성공 또는 실패).

또한 표시 할 다른 텍스트를 보내려면 어떻게해야합니까? @ViewChild와 동등한 기능이 있습니까? 당신의 도움이

+1

하위 구성 요소에 서비스를 주입하십시오. 알람을 클립 구성 요소의 서비스로 전달합니다. 주제를 사용하여 서비스에서이 경고를 내 보냅니다. 또한 app 구성 요소에 서비스를 삽입하십시오. 앱 구성 요소에서 제목을 구독하고 알림이 수신 될 때마다 표시합니다. https://angular.io/guide/component-interaction#parent-and-children-communicate-via-a-service –

+0

저는 서비스와 구성 요소를 간단하게 유지하기 위해 어떻게했는지 예제를 만들었습니다. https://github.com/angular-in-action/portfolio/tree/master/src/app/alert –

+0

감사합니다. Jeremy. 당신의 모범은 제게 많은 도움을 주었고, Angular doc에 JB에게 감사드립니다! – David

답변

1

에 대한

덕분에 나는 ObservableSubject 함께 할 것입니다. 기본적으로 service이 해당 구성 요소의 공유 모듈에 주입되어 상태를 공유해야합니다.

app (루트) 구성 요소는 public observable 서비스에 subscription이됩니다. 그리고 모든 구성 요소는 subject.next()을 호출하여 해당 service을 통해 상태를 설정합니다. observable 당신은 여기에 코드를 확인할 수 있습니다 subject.

의 값을 반환합니다 : https://angular.io/guide/component-interaction#parent-and-children-communicate-via-a-service

아이디어는 매우 유사하다.

+0

그 코드에서 구독이 관리되는 방식은 꺼져 있습니다. 거대한 메모리 누수 – bryan60

+0

'ngOnDestroy' 당신이'.unsubscribe' (또는 그 코드가 다른 곳에서 가장 잘 어울린다면) - 나는 그것을 언급하는 것을 잊었습니다. 그것은 내가 추측 한 유스 케이스에 달려있다. – DrNio

+0

그것은 그 이상입니다. 모든 함수 호출에는 완전히 재귀가 필요하지 않습니다. 또한 구독 취소는 유스 케이스에 의존하지 않으며, 항상 그렇지 않으면 메모리 누출이 발생합니다. 필요하지 않은 유일한 경우는 자체 종결 관찰 결과입니다. – bryan60