2016-05-17 6 views
-1

で腕時計のように、私はUserServiceのを持っており、このservice.thisでisloggin性質を持っているが、私のサービスです。、角度1

@Injectable() 
export class UserService { 

    private static _data: any; 
    isloggin ; 



    constructor(private _util: UtilService) { 


    } 

    public signUp(data: any) { 
     return this._util.post('api/auth/register', data); 
    } 

    public signIn(data: any) { 
     var promise = this._util.post('api/auth/login', data); 
     promise.then(value => { 
      if (value.status == 0) { 
       UserService._data = value.result; 
      } 
     }); 
     return promise; 
    } 

    public signOut() { 

     var promise = this._util.post('api/auth/logout'); 
     promise.then(value => { 
      if (value.status == 0) { 
       this.reset(); 
      } 
     }); 
     return promise; 


    } 

} 

変更をisloggin際たいtrueまたはfalseにこの値を別のコンポーネントに送る...このサービスでrxjsを使用する方法は?

答えて

0

Observable/Subjectを活用することができます。

@Injectable() 
export class UserService { 

    private static _data: any; 
    islogin:boolean; 
    isLogin$:Subject<boolean> = new Subject(); 

    constructor(private _util: UtilService) { 
    } 

    public signUp(data: any) { 
     return this._util.post('api/auth/register', data); 
    } 

    public signIn(data: any) { 
     var promise = this._util.post('api/auth/login', data); 
     promise.then(value => { 
     if (value.status == 0) { 
      UserService._data = value.result; 
      this.login$.next(true); // <------------ 
      } 
     }); 
     return promise; 
    } 

    public signOut() { 
     var promise = this._util.post('api/auth/logout'); 
     promise.then(value => { 
      if (value.status == 0) { 
       this.reset(); 
      this.login$.next(false); // <----------- 
      } 
     }); 
     return promise; 
    } 
} 

一緒に通信する必要があるすべてのコンポーネントについて、このサービスのインスタンスを1つ用意する必要があります。あなたのアプリケーションをブートストラップするときは、そのプロバイダを指定することができます。

bootstrap(AppComponent, [ (...), UserService ]); 

の詳細については、このページを参照してください:

+0

私は_dataを送信する必要があります... 2値を送信する方法と、値を取得し、より良い私は主題またはbehaviorsubjectを使用する?何が尊敬であるのか理解できない! –

+0

なぜ私は非同期パイプを使用できないのですか?? –