在angular2中,我希望我的组件与另一个组件通信,这怎么可能?

时间:2016-11-10 17:31:55

标签: angular

在angular2中,我希望我的组件与另一个组件通信,这怎么可能?

我基本上有一个组件需要对另一个组件进行广播,以便该组件可以自行更新。

我只知道如何在角度v1中执行此操作。

我没有要显示的代码,因为我不知道如何做到这一点。

组件是分开的而不是嵌套的。 我怎样才能让他们互相交谈,例如事件或某事?

1 个答案:

答案 0 :(得分:0)

我有一个定义登录可观察的登录服务:

private loggedIn$: Subject<LoggedIn>;

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

然后我定义了两个方法set和get:

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; 
  }
}

通过这样,您可以通过简单地订阅observable来通知用户在您的应用中的任何位置登录:

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);
    });
 }