angular - “null”类型的参数不能分配给参数 Angular
问题描述
@Injectable({ providedIn: 'root' })
export class AuthenticationService {
private currentUserSubject: BehaviorSubject<User>;
public currentUser: Observable<User>;
constructor(private http: HttpClient) {
this.currentUserSubject = new BehaviorSubject<User>(JSON.parse(localStorage.getItem('currentUser')));
this.currentUser = this.currentUserSubject.asObservable();
}
public get currentUserValue(): User {
return this.currentUserSubject.value;
}
login(username: string, password: string) {
return this.http.post<any>(`${environment.apiUrl}/users/authenticate`, { username, password })
.pipe(map(user => {
// store user details and jwt token in local storage to keep user logged in between page refreshes
localStorage.setItem('currentUser', JSON.stringify(user));
this.currentUserSubject.next(user);
return user;
}));
}
logout() {
// remove user from local storage to log user out
localStorage.removeItem('currentUser');
this.currentUserSubject.next(null);
}
}
知道为什么我在最后一行(this.currentUserSubject.next(null))出现错误吗?错误消息:“null”类型的参数不可分配给“User”类型的参数。 最新的打字稿版本不允许这样做吗?另一种解决方案是什么?
解决方案
打字稿变得更严格了。
您可以关闭严格模式或让您的 observable 接受null
:
private currentUserSubject: BehaviorSubject<User | null>;
推荐阅读
- django - 如何在 Wagtail Draftail Editor 中更改 H 元素的类
- java - KrbException: S4U2self 需要一个 FORWARDABLE 票
- javascript - 制表符 colspan 或空白表的默认消息?
- kotlin - 是否有与 RxJava 的 onDispose 等效的 Kotlin Coroutines Channel?
- mongodb - 在集合上添加新索引后是否必须重新启动 MongoDB?
- react-native - 如何让用户使用 aws-amplify 授权在 react-native 中使用相同的用户名但不同的电子邮件重新注册?
- jenkins-pipeline - 综合空手道测试报告和持续测试
- wordpress - 如何使用 WP REST API 中的 register_rest_field 将一个字段嵌套在另一个字段下
- angular - 当我稍后使用 `tap` 方法时,不会调用 `map`。我从水龙头得到回报
- ruby-on-rails - 如何在 Ruby on rails 中将 url 作为参数传递?