Я пытаюсь реализовать в моем LoginService a isLoggedIn
логическое значение типа BehaviorSubject
вместе с функциями getter и setter, чтобы получить значение в качестве наблюдаемого/правильно установить переменную через его BehaviorSubject. Это работает, однако он вызывает две ошибки в TSLint о «Тип не назначаемый» и «Идентификатор сублицензии». Каким будет правильный способ определить его без жалобы TSLint.Как реализовать BehaviorSubject с getter и setter в Angular 2
Это урезанная версия указанной выше кода:
@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););
}
}
использовать разные имена для свойства и геттер/сеттеры. – toskv
также ... на самом деле нет смысла иметь геттер/сеттер для публичного имущества. В любом случае пользователи вашего класса смогут обойти их. – toskv