我有UserService并且在此服务中拥有isloggin
属性。这是我的服务:
@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 :(得分: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;
}
}
您需要为需要一起通信的所有组件提供此服务的单个实例。您可以在引导应用程序时指定其提供程序:
bootstrap(AppComponent, [ (...), UserService ]);
有关详细信息,请参阅此页: