2016-11-10 6 views
-2

angular2では、私のコンポーネントを別のコンポーネントと話したいのですが、どうしたらいいですか?angular2では、私のコンポーネントを別のコンポーネントと話したいのですが、これはどうですか?

私は基本的に、コンポーネントがそれ自身を更新できるように、別のコンポーネントにブロードキャストする必要があるコンポーネントを持っています。

私は角度v1でこれを行う方法しか知りません。

私はこれを行う方法がわからないので、表示するコードはありません。

コンポーネントは独立しており、ネストされていません。 どうやって互いに話すことができますか?イベントか何か?

+1

あなたはドキュメントを参照することもできます。https://angular.io/docs/ts/latest/cookbook/component-communication.html – silentsod

+0

を使用すると、親の親のためのリンクを持っていますか?私は子供に親が必要ない。 – AngularM

+0

親子と同じ概念。コンポーネント間の通信は常に 'サービス 'と考える – PierreDuc

答えて

0

私が観察LOGGEDINを定義するログインサービスがあります。

private loggedIn$: Subject<LoggedIn>; 

constructor() { 
    this.loggedIn$ = <Subject<LoggedIn>>new Subject(); 
} 

私はその後、設定した2つのメソッドを定義し得る:

setLoggedIn(loggedIn: LoggedIn): void { 
    this.loggedIn$.next(loggedIn); 
} 

getLoggedIn(): Observable<LoggedIn> { 
    return this.loggedIn$.asObservable(); 
} 

クラスでログイン:

export interface ILoggedIn { 
    email: string; 
    password: string; 
    error: string; 
} 

export class LoggedIn implements ILoggedIn { 
    email: string; 
    password: string; 
    error: string 

    constructor(email: string, password: string, error: string) { 
    this.email = email; 
    this.password = password; 
    this.error = error; 
    } 
} 

これにより、ユーザーは観察可能なものを購読するだけで、あなたのアプリのどこにでもログインしたという通知を受けることができます:

constructor(
    private ls: LoginService, 
    private ss: SettingsService) { 
}  

ngOnInit() { 
    this.ls.getLoggedIn() 
    .subscribe(
     loggedIn => { 
     this.items = this.as.getLoggedInMenu(); 

     var us = this.ss.getUserSettings(); 
      this.ts.setTheme(us.theme); 
    }); 
} 
関連する問題