app.component.ts
은 내 Angular 2 앱의 진입 점입니다. 두 개의 구성 요소 (머리글 및 sidenav)가 있습니다.부모 - 자식 관계없이 두 구성 요소 간 통신 방법은 무엇입니까?
@Component({
selector: 'app-root',
template: `
<app-header></app-header>
<app-sidenav></app-sidenav>
`
})
export class AppComponent { }
는 여기에 내가 무엇을 달성하고자하는의 다음 <app-header>
구성 요소의 내부에서 나는 <app-sidenav>
구성 요소의 개방을 트리거해야 (메뉴) 버튼을 가지고있다.
즉, <app-header>
에있는 버튼의 클릭 이벤트는 <app-sidenav>
구성 요소 내에 open()
메소드를 트리거해야합니다.
header.component.ts :
@Component({ selector: 'app-header', template: ` <button (click)="onSidenavOpen()">Menu</button> ` }) export class HeaderComponent { constructor() { } onSidenavOpen() { // trigger the opening of the <app-sidenav> component } }
sidebar.component.ts :
@Component({ selector: 'app-sidenav', template: ` <md-sidenav #sidenav> // bla bla, sidebar </md-sidenav> ` }) export class SidenavComponent { constructor() { } open(sidenav) { sidenav.open(); } close(sidenav) { sidenav.close(); } }
나는 각이 개 문서의 component interaction section 읽기 ,하지만 나는 고심하고있다. 이 두 가지 구성 요소간에 의사 소통하는 가장 좋은 방법입니다. 내가 가진 일반적인 의도는 각 구성 요소에 가능한 한 많은 논리를 캡슐화하는 것입니다.
어떻게하면 유스 케이스에 접근 할 수 있습니까? 중간 서비스를 만들겠습니까? 예를 들려주십시오.
https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service (캡션에 "부모와 자녀의 의사 소통"이 표시되는 이유를 묻지 마십시오.) 서비스 사용하기 구성 요소 통신의 경우 아무리 관련이 있거나 상관 관계 없음 –