2017-09-15 5 views
0

두 가지 유형의 구성 요소가 있습니다. 둘만을 사용과는 HTML5 - 캔버스 요소를 포함하지만 차트에서 서로 다른 유형의 데이터를 표시해야합니다 :이 중 4백그라운드 애플리케이션 로직을위한 최상의 솔루션은 무엇입니까?

  1. 구성 요소 A (이들 중 오직 1)
  2. 구성 요소 B (0)

두 구성 요소 모두 두 데이터 세트의 첫 번째 데이터 입력 항목의 dateTime이 필요하지만 마지막 항목의 dateTime은 해당 데이터 세트에서 가져옵니다.

구성 요소 B가 자신의 데이터 세트에서 날짜-한계를 발견하는 방법이 있습니다

부품 A는 구성 요소 B.

은 현재이 같은 그것을 할 에서 자사의 첫 번째 항목 날짜를 필요로한다. Observer-pattern을 사용하여 & Subject, 나는 서비스를 통해 반환 된 날짜를 컴포넌트 A에 브로드 캐스팅한다.

이 문제는 갑자기 커플 링이 매우 단단해진다는 것을 의미한다. 먼저 계산을 수행하려면 B가 필요하기 때문에 먼저 구성 요소 A를 초기화 할 수 없습니다. 두 가지 구성 요소는 이상적으로 데이터를 동시에 초기화하고 표시/공유하고 계속해서 수행해야합니다. 예를 들어 사용자가 하나의 차트를 스크롤하면 다른 모든 구성 요소도 스크롤해야합니다.

이러한 이유 때문에 이러한 구성 요소 위에 추가 레이어를 추가해야했습니다. 컨트롤러.

그래도 난 최선 알아낼 수 없습니다


  • A는 입력으로 외부 데이터를 취할 수있는 서비스를 공유?
  • 컨테이너 구성 요소? (트랜스 클루 전)
  • 다른 구성 요소, 부품 C, & B는 어린이 있는지?

  • 저는 아직 각도 2를 처음 사용하기 때문에 미래의 유지 보수/개발을 위해 어떤 접근 방식이 가장 적합한 지 알기 어렵습니다.


I 부모와 같은 다른 통상의 성분을 만드는쪽으로 인출하고,이 성분의 송신이 그 자식들로 /로부터 (A & B) 필요에 따라 데이터를 수신되고있어.

또한 "모범 사례"와 비어있는 '논리 셸'과 같은 구성 요소를 사용할 수 있는지 확실하지 않습니다. 나는 여기저기서 읽으려고했는데, 많이 찾았지만 내 질문에 대한 정확한 대답을 얻지 못하는 것 같습니다. 이 지식을 모두 이해하고 직접 대답 할 수 있기까지는 시간이 걸릴 것입니다. 누군가가 나에게 도움을 줄 수 있기를 바랍니다. 감사합니다.

추신 : 내 각진 응용 프로그램이 더 큰 응용 프로그램에서 하위 구성 요소가 될 것이며 다른 부모 comp에서 해당 데이터를 가져옵니다.

답변

0

논리를 서비스에 넣지 않는 이유는 무엇입니까? 상위 서비스에 하위 서비스를 주입하여 서비스 계층을 설정할 수도 있습니다.

로직이 UI/상호 작용과 관련이 없다면 재사용 가능한 서비스에 배치해야합니다. 논리가 UI와 관련된 경우 A와 B 간의 조정자 역할을하는 부모 구성 요소를 구성 할 수 있습니다 (각각의 입력/출력 매개 변수에 대해 작용)

무엇을 하든지 관계를 분리하는 것이 좋습니다.

  • A와 B 모두 출력을 필요로하는 다른 구성 요소에 신경을 쓸 필요가 없습니다. Angular에는 입력/출력 매개 변수가 있습니다.

  • 일부 일별 datetime 계산 항목을 구성 요소에 넣지 마십시오. 서비스를 통해 재사용 할 수있게하십시오.

  • 인터페이스 및 주입을 도입하여 커플 링을 느슨하게 유지하십시오.

업데이트 : 당신이 (또는 setter를하지만 덜 표현이다) 방법을 사용하여 입력을 통과해야하므로

서비스는, 주사 생성자 매개 변수를 사용해야합니다. 임의의 JSON 객체를 전달하려면 모든 매개 변수를 사용할 수 있습니다. 그러나 JSON이 특정 구조를 따르는 경우 인터페이스를 정의 할 수 있습니다.

public doStuff(input: any): any { } 

또는

interface IMyDataContract { 
    dateField: string; 
} 

public doStuff(input: IMyDataContract): any { } 
+0

내 로직 HTML5 캔버스 요소에 데이터를 그리는하기 위해, 데이터 세트 JSON 찾고/조작에 관한 것이다. 서비스를 사용할 수 있어야하지만 JSON 데이터를 입력으로 전달하는 데 문제가있었습니다. 답변을 주셔서 감사합니다. 서비스 솔루션을 다시 사용해 보겠습니다. – PDAWG

+0

메서드와 매개 변수를 정의하면됩니다. 귀하의 서비스에는 주사 가능한 생성자 매개 변수 만 포함되어야합니다. – mbnx

+0

답변을 업데이트했습니다. – mbnx