2016-09-08 3 views
1

저는 CMS와 같은 것을 개발 중입니다. 템플릿이있는 기사가 있습니다. 기사가 백엔드에 추가되고 템플릿을 사용하여 기사를 표시해야합니다 (기사를 렌더링 할 때 사용할 템플릿을 알고 있습니다). 10 가지 템플릿이 있으므로 템플릿을 저장하는 가장 좋은 방법은 무엇인지 파악하고로드 된 아티클에 따라 올바른 템플릿을로드하는 방법을 알아 내려고합니다. 내가 고려하고 : (새 템플릿을 만들 때 응용 프로그램을 구축 할 필요)각진 2 동적 템플릿

  • 백엔드에 템플릿에 대한 메타 데이터를 저장 및 템플릿을 구축 내가 응용 프로그램에서 템플릿을 저장 그것을
  • 을 필요로 할 때
  • 나는 건축 및 테를 찾고 있어요 각 템플릿의 구성 요소를 갖는 백엔드
  • 에 원시 템플릿을 저장하고 동적으로로드 (너무 많은 오버 헤드)

chnological 솔루션입니다. 옵션 1을 사용하고 싶지만 기사 구성 요소의 템플릿을 작성하는 방법을 모릅니다. 기사를 얻고 필요한 템플릿을로드 (빌드)하는 구성 요소를 하나만 갖고 싶습니다.

Angular2 RC5

편집 :

템플릿 A : 설정 CSS 규칙 (파란색 텍스트, 헤드 라인을위한 캡), 제목, 단락, 이미지, 단락 및 (단락 내부) 다른 곳에서 링크의 템플릿 B : CSS 규칙의 설정 B (빨간색 텍스트, 일반 헤드 라인), 제목, 이미지 회전 목마, 한 단락

{ 
"templateId": 1, 
"title": "Article title", 
"elements": [{ 
    "text": "paragraph text" 
}, { 
    "image": "http: //someurl.com" 
}, { 
    "text": "another paragraph text" 
}] 

}

+0

일반적으로 Angular2는 템플릿을 컴파일하여 나머지 앱과 함께 배포하려고합니다. 템플릿이 다른 레이아웃을 사용합니까? 아니면 행동상의 차이점이 있습니까? IMO 기사 템플릿 중 하나를 교체하는 ngSwitch 문을 사용하는 단일 구성 요소가 최선의 방법입니다. – cDecker32

+0

템플릿에 몇 가지 예를 추가했습니다. 템플릿에 추가해야하는 요소 배열을 기반으로 템플릿을 만들 수도 있습니다. ngSwitch 또는 ngIf로 간주했습니다. 시간이 지나면 너무 복잡해 질 것이라고 생각합니다. – Zoidy

+0

"템플릿에 추가 할 요소 배열"로 무엇을 묻고 있는지 잘 모르겠습니다. 그러나 나는 당신의 최선의 베팅이 여기에 있다고 생각하는 것에 답을 게시 할 것입니다. – cDecker32

답변

1

최선의 방법은 ngSwitch를 사용하여 기사간에 교환하는 상위 구성 요소를 사용하여 각 스타일에 대한 구성 요소를 갖는 것입니다. 그래서 ...

<article-component> 
    <div ngSwitch="article.type"> 
    <template-a *ngSwitchCase="a" [article]="article"> 
    </template-a> 
    <template-b *ngSwitchCase="b" [article]="article"> 
    </template-b> 
    <template-c *ngSwitchCase="c" [article]="article"> 
    </template-c> 
    </div> 
</article-component> 

그 외에도 "기사"데이터 모델의 모양을 알지 못하면 무엇을 할 수 있는지 잘 모르겠습니다.

EDIT : Ok 제안 된 데이터 모델을보고 나면 템플릿 내에서 ngForce를 사용하여 "요소"배열을 반복 할 수 있습니다. 나는 이것이 일종의 잔치 인 것을 안다. 그러나 그것은 당신의 최선의 방법 일 가능성이있다. 그리고 obv는 다른 기사 템플리트 사이에서 사용될 "단락", "이미지"및 "회전 목마"구성 요소를 공유했습니다.

+0

내가 준비하는 모든 템플릿에 대해 여전히 별도의 구성 요소가 있어야한다는 것을 의미합니까? – Zoidy

+0

기본적으로 예. 템플릿의 유연성을 유지하면서 중복 수를 줄일 수 있습니다. 이 데이터 모델을 보지 않고서는 더 이상 논평 할 수 없습니다. 그리고 내 대답이 마음에 들지 않으면 .createComponent()를 사용해보십시오. http://stackoverflow.com/questions/37618222/how-do-i-dynamically-inject-an-angular2-sub-component-via -typeescript-code – cDecker32

+0

데이터 모델에 대해 계속 생각하고 있지만 내 초안을 내 질문에 추가했습니다. 지금까지 도와 줘서 고맙다. – Zoidy