2017-11-15 10 views
1

은 내가 콘텐츠 영역으로 그 두 번째 sidenav를 사용하려면이각도 재료 SideNav 컨텐츠 전략

<mat-sidenav-container> 

    <mat-toolbar></mat-toolbar> 

    <router-outlet></router-outlet> 

    <mat-sidenav></mat-sidenav> 
    <mat-sidenav position="end"></mat-sidenav> 

</mat-sidenav-container> 

의 라인을 따라 표준 sidenav 레이아웃을 가지고있다.

이 프로젝트에서 모든 활성 경로는 단순히 캔버스 영역이있는 구성 요소 및 "실험"에 대한 몇 가지 기본 정보입니다. 아마도 기본적인 형태의 슬라이더 나 컨트롤 일 것입니다.

<div> 
    Some Content 
<div> 
<canvas> 
</canvas> 

기본적으로 콘텐츠 div가 두 번째 sidenav 컨테이너에 들어가기를 원합니다. Canvas 만 실제 구성 요소의 자식입니다.

<mat-sidenav-container> 

    <mat-toolbar></mat-toolbar> 

    <router-outlet> 
     <canvas-component> 
      <canvas></canvas> 
     </canvas-component> 
    </router-outlet> 

    <mat-sidenav></mat-sidenav> 
    <mat-sidenav position="end"> 
     <div> 
      Some Content 
     <div> 
    </mat-sidenav> 

</mat-sidenav-container> 

이것은 미친 듯하다. 나는이 방법으로 부모 구조에 의존해야한다고 생각하지 않는다. 알 겠어. 구성 요소가 sidenav를 추가하는 것이 반대의 경우는 훨씬 좋지만 sidenav는 sidenav 컨테이너에 속해야하므로이 구성 요소의 경계를 벗어납니다.

그래서 최상의 전략은 무엇입니까? 나는 주위에 내 머리를 얻을 수 없습니다. 2 개의 외부 콘센트가 필요하고 서로 공유 할 수 있도록 공유 서비스가 필요한 2 가지 구성 요소로 보시겠습니까? 더 좋은 방법이 있습니까?

답변

1

내가 제대로 이해한다면 :

  1. 만은 "캔버스"sidenav가 <router-outlet>이 있어야합니다.
  2. "캔버스"sidenav가 데이터의 다른 구성 요소에 의존하는 경우 해당 논리를 별도의 서비스로 추출해야합니다. 이렇게하면, 당신의 "canvas"sidenav는 독립적으로 그것으로부터 데이터를 얻을 수 있습니다.
  3. 템플릿에 2 개의 다른 콘센트가 필요하다면 aux routing을 사용하십시오. 기본 콘텐트 영역 (홈페이지)이 정적 인 경우 - 경로를 표시 할 필요가없는 경우 "홈"구성 요소를 사용하십시오 당신의 템플릿 만이 도움이

희망 당신의 "캔버스"sidenav에 <router-outlet>을 유지!

+0

내 질문이 업데이트되었습니다. 제 캔버스 구성 요소를 두 개의 구성 요소로 나눠 주시겠습니까? 'canvas-component'와'canvas-component-info'가 있습니다. 그런 다음 2 개의 라우터 콘센트가 필요합니까? 하나는 페이지의 주요 영역을위한 것이고 다른 하나는 sidenav를위한 것입니까? 그런 다음 서로 이야기 할 수있는 서비스가 필요합니까? – Clark

+0

1) 캔버스 구성 요소를 분할해야하는지 잘 모르겠습니다. 2) 템플릿에 2 개의 다른 콘센트가 필요하다면 [aux 라우팅] (https://stackoverflow.com/a/34642273/3612903)을 사용하고 메인 컨텐츠 영역 (홈페이지)이 정적 인 경우 그것을 표시하는 경로가 필요하지 않습니다 단순히 템플릿에 "집"구성 요소를 사용하여 "캔버스"sidenav에있는 "콘센트"를 유지. 생각해 보면, 예제에서 ''안에 2 개의 ''요소가 남아 있습니다. 각각은 그것 자체의' '래퍼를 가져야한다. 내가 아는 한 sidenavs는 중첩되지 않아야합니다. – DotBot

+0

감사 DotBot! 내가 집에 돌아와보고 할 때 나는 한 번 둘러 볼 것이다! 한 가지 분명한 것은 2 개의 사이드 바를 가질 수 있다는 것입니다. https://material.angular.io/components/sidenav/overview – Clark