私は現在Angular2を教えていますが、AngularJSで簡単に修正できる実用的な問題がありますが、現在私は例を見ていますAngular2の解を見つける。とにかく、私はApp
と呼ばれるトップレベルのコンポーネントがあります。そのコンポーネント内には、CSSクラスを適用するプロパティがあります。ここでは、コンポーネントテンプレートとして使用されるHTMLがあります - ngClass
を使用してCSSクラスを適用する場所を確認できます。 showMenu
の値は単なるブール値です。ここで
<div class="navigation" role="navigation">
<ul>
<li><a [routerLink]="['Home]">Home</a></li>
<li><a [routerLink]="['Mail']">Mail</a></li>
<li><a [routerLink]="['Friends']">Friends</a></li>
<li><a [routerLink]="['Games']">Games</a></li>
</ul>
</div>
<!-- below is where I wish to toggle the class -->
<div class="site-wrap" [ngClass]="{'slide-right': showMenu}">
<div class="container-fluid">
<div class="row nav">
<top-navigation></top-navigation>
</div>
</div>
<div class="container-fluid content-gradient">
<div class="row">
<div class="col-md-10">
<router-outlet></router-outlet>
</div>
<div class="col-md-2">
<contacts-list></contacts-list>
</div>
</div>
</div>
<div class="container-fluid footer">
<footer-navigation></footer-navigation>
</div>
</div>
Appのコンポーネントのコード(ここでは見ることはあまりありません...)
export class App {
showMenu: boolean = false;
constructor() {
}
// I need to listen for the toggle somehow?
toggleMenu():void {
this.showMenu = !this.showMenu;
}
}
は今、あなたは私がセレクタtop-navigation
と子コンポーネントを持って見ることができます。このコンポーネントTopNavigation
には、親/最上位コンポーネントのshowMenu
の値を切り替えるボタンのメソッドがあります。これまでのコードはここまでです(小さな抽出物)
export class TopNavigation {
constructor() {
// Things happening here
}
toggleMenu():void {
// I want to toggle the parent property by somekind of $emit
}
}
ここでは、コンポーネントのテンプレートHTML(一部ではありません)です。 AngularJSで
<div class="col-xs-2 col-sm-1 hidden-md hidden-lg hamburger-menu">
<button class="btn btn-default" (click)="toggleMenu()">☰</button>
</div>
私はtoggleMenu
機能に$scope.$emit
を持っているでしょうし、親に私はイベントをリッスンする$scope.$on
を持っているでしょう。私は現在Angular2でEventEmitters
について読んでいますが、誰かが簡単な説明や例を持っていれば、私はAngularデベロッパーにとってこれが一般的で実践的な日常業務だと思うので、特に感謝しています。
あなたの正確な要件を知りません。複数のコンポーネントから値を切り替える必要がある場合は、Theryryの答えに従ってください(ただし、EventEmitterではなくObservableを使用してください)。 –