我試圖在我的LoginService中實現一個isLoggedIn
類型爲BehaviorSubject
的布爾值以及getter和setter函數以獲取Observable的值/通過其正確設置變量BehaviorSubject。這是行得通的,但是它在TSLint中引發了兩個關於「Type not assignable」和「Dublicate identifier」的錯誤。沒有TSLint的抱怨,定義它的正確方法是什麼?如何在Angular 2中使用getter和setter實現BehaviorSubject
這是上述代碼的精簡版:
@Injectable()
export class LoginService {
public isLoggedInSource = new BehaviorSubject<boolean>(false);
public isLoggedIn: Observable<boolean> = this.isLoggedInSource.asObservable(); // Duplicate identifier 'isLoggedIn'.
constructor(private http: Http) {}
set isLoggedIn(logged): void { // Duplicate identifier 'isLoggedIn'.
this.isLoggedInSource.next(logged);
}
get isLoggedIn(): Observable<boolean> { // Duplicate identifier 'isLoggedIn'.
return this.isLoggedInSource.asObservable();
}
logout() {
this.isLoggedIn = false; // Type 'boolean' is not assignable to type 'Observable<boolean>'.
}
login(body) {
return this.http.post('/login', body)
.map(res => {
if (res.token) {
this.isLoggedIn = true; // Type 'boolean' is not assignable to type 'Observable<boolean>'.
}
return res;
})
.catch(err => Observable.throw(err););
}
}
使用不同的名稱屬性和getter/setter方法。 – toskv
也......對於一個公共財產而言,並沒有真正意義上的getter/setter。無論如何,你的班級的用戶將能夠繞過他們。 – toskv