2017-06-26 3 views
1

私はAngular2を初めて使っています。私は@Input@Outputタイプのものを頭に浮かべています。角度2コンポーネントコミュニケーション

例として、2つのコンポーネントがあります。コンポーネント2の可視性を切り替えるには、コンポーネント1のボタンが必要です。

import { Component, Input, Output, EventEmitter} from '@angular/core'; 

@Component({ 
selector: 'widget-one', 
template:'<div class="widget-one" (click)="sendToWidgetTwo()"><button>Send to widget two</button></div>'}) 

export class WidgetOne { 

    constructor(){ 
    console.log('Hello Widget One'); 
    } 

    sendToWidgetTwo(){ 
    console.log("button clicked"); 
    // communicate with widget two 
    } 

} 

import { Component, Input, Output, EventEmitter} from '@angular/core'; 

@Component({ 
    selector: 'widget-two', 
    template:'<div *ngIf="showing" class="widget-two">{{msg}}</div>' 
}) 
export class WidgetTwo { 

    msg = "hello widget two"; 
    showing = true; 

    constructor(){ 
    console.log('Hello Widget Two'); 
    } 

} 

私はそれを表示または非表示にするWidgetTwoのshowing変数を切り替えるWidgetOneのボタンをしたいです。

+4

2つのコンポーネントが親子関係にない場合、1つのアプローチはサービスを使用することです彼らは通信することができます。全体的には、さまざまなオプションについて説明しているドキュメントのこの部分を読むことをお勧めします。https://angular.io/guide/component-interaction –

答えて

2

両方のコンポーネントに共通の親がある場合、最初のコンポーネントは、2番目のコンポーネントの可視性を切り替えるために、親のブール値varを設定するイベントを生成する必要があります。親のテンプレートでは、このブール変数にバインドされた* ngIfディレクティブを使用して、コンポーネント2を表示/非表示にします。

+0

ありがとう!素晴らしいビデオ。どうすればいいのか教えてください:) –

+0

Angular CLIを使用している場合、ビデオに示されているようにStockインターフェイスでこれらの特別な手配をする必要はありません。 –