2017-03-18 1 views
4

모듈이 공급자인지 아니면 공급자가 다른 모듈을 내보낼지를 결정하는 리트머스 테스트가 있습니까? 모듈이 "공유"모듈에 나열 될 후보인지 여부를 결정하기 위해? angular.io에서Angular2 모듈을 공유 모듈로 가져올 수 있는지 확인하는 방법

는 :

"이유로 제공이 안되는 SharedModule는 앞서 설명한도 아니다해야의 그 수입되거나 재수출 모듈 업체가이 가이드 라인에서 벗어나는 경우, 무엇을 알고 당신 '.. 하고 있고 왜. " 내가 모듈을 사용하는 가면

https://angular.io/docs/ts/latest/cookbook/ngmodule-faq.html#!#q-module-recommendations

그러나의 그 위에서 설명한 테스트를 통과하면 ReactiveFormsModule 또는 RoutingModule는 어떻게 확인합니까 가정 해 봅시다? 공급자가 없거나 공급자를 다시 내보내기하는 가져온 모듈이없는 SharedModule의 모듈 만 사용하려면 모듈이이 요구 사항을 충족하는지 확인하는 방법이 있어야합니다. 이게 뭐야?

+0

@Aravind 의견 기반 = "반응보다 각도가 더 좋습니까?". 이 질문은 "이 점을 고려하여 내 앱을 구성하는 좋은 방법은 무엇입니까?"라고 말하면서 몇 가지 의견이 있지만 논리에 근거하고 있습니다. Stackoverflow는 날이 갈수록 멍청 해지고 있습니다./호언 장담 (이것은 귀하의 의견에 대한 공격이 아니며,이 질문이 잠겨있어서 나를 귀찮게합니다.) – Ced

+0

좋습니다. 나는 그것의 본질에 대한 질문을 다 ... – Boice

+0

귀하의 질문은 공유 모듈의 공급자에 관한 것입니다 - 구성 요소가 아닙니다. 제목을 수정하는 데 도움이 될 수 있습니까? – pixelbits

답변

1

일을하는 일반적인 방법은 아래 이미지와 같습니다.

enter image description here

는 일반적으로 공급자는 항상 범위가 특정 모듈에 제한되어있는 경우 다른, 각각의 모듈의 providers[]에 나와있는 루트 모듈 AppModule로 이동합니다.

+0

감사합니다. FormsModule의 설명서에는 "RadioControlRegistry"라는 공급자가 있습니다. 그리고 ReactiveFormsModule에는 두 개의 공급자가 나열되어 있습니다. "FormBuilder, RadioControlRegistry." 그럼 왜 공유 모듈에 넣어도 괜찮습니까? 다시 한 번 리트머스 검사를 찾고 있습니다. 내 애플리케이션을 구축 할 때마다 새 모듈을 사용해야 할 때마다 스택 오버플로에 게시하고 싶지 않습니다. 주어진 가장 일반적인 예제 인 FormsModule을 결정하기위한 과학적 방법이 있어야하며 주어진 규칙을 분명히 위반하는 것으로 보인다. – Boice

+0

댓글을 한 번 읽습니다. 나는 네가 말하는 것을 얻을 수 없다. :( – Aravind

2

서비스는 일반적으로 응용 프로그램 범위가 모두있는 싱글 톤을 대상으로합니다.

모듈을 가져 오면 가져온 모듈에서 제공하는 서비스가 호스트 모듈의 인젝터에 추가됩니다. 공유 모듈 내에 서비스를 가지면 여러 모듈이 공유 모듈을 가져오고 모듈 범위가있는 서비스의 여러 복사본을 생성 할 수 있습니다. SharedModule에 서비스를 추가하면 이것이 의도 한 것임을 확인하십시오.

모범 사례에 따르면 응용 프로그램마다 코어 모듈 집합이 있어야합니다. 이러한 핵심 모듈은 공유되지 않으므로 (AppModule에서만 가져와야 함) 따라서 Singleton 인 텐트를 손상시키지 않고 핵심 모듈에 서비스를 추가하는 것이 안전합니다.

리트머스 시험 :

당신은 응용 프로그램 전체 공유 싱글 서비스, 다음 는 SharedModule에 넣어하지 않는하려면이 내에서 여러 모듈에서 수입 할 수때문에 SharedModules 동일 응용 프로그램입니다. 대신 CoreModules에 넣고 AppModule에서만 가져와야합니다.

다음과 같은 규칙과 지침을 기억

  1. AppModules는
  2. 코어 모듈은 AppModule
  3. 공유 만 가져와야합니다 다른 모듈을 가져올 수 있습니다 응용 프로그램 당 하나의 AppModule있다 모듈은 모든 모듈 (AppModule뿐 아니라)에서 가져올 수 있습니다.
관련 문제