1
我有一个组件和一个服务。每当我的服务中的布尔属性发生更改时,我都想通知我的组件。我想我应该使用rxjs中的Observable和Observer。监视angular2中服务和更新组件的更改,打印稿
我做了服务和组件不按预期工作。
AppComponent.ts
import { Component } from '@angular/core';
import { UserData } from 'user-data.service';
@Component({
selector: 'app',
templateUrl: '<div></div>'
})
export class AppComponent {
isLoggedIn: boolean;
constructor(public userData: UserData) {
userData.isLoggedIn.subscribe(isLoggedIn => {
this.isLoggedIn = isLoggedIn;
});//???
}
???
}
UserDataService.ts
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
@Injectable()
export class UserData {
isLoggedIn: Observable<boolean>; // ???
observer: Observer<boolean>; // ??? giving an error in tsc (Type 'Observer' is not generic)
constructor() {
this.isLoggedIn = new Observable(observer =>
this.observer = observer
).share(); ///???
}
changeLoginStatus (isLoggedIn: boolean) { // function called from login/logout actions
this.observer.next(isLoggedIn); // ??? not sure
}
}
下一个方法是在Observer类型上,而不是在Observable上 – lintu
对不起,请将类型更改为'Subject'。 –
当我尝试使用新的BehaviorSubject(false);我在rxjs上获得了404。 http:// localhost:8080/node_modules/rxjs/404(Not Found)。但我可以使用rxjs中的'Subject'。 从'rxjs'导入{BehaviorSubject};从'rxjs/Subject'导入{Subject}时抛出错误;作品。任何想法?? – lintu