主题在构造函数中返回未定义
Subject returning undefined in constructor
我正在使用 Subject 来交流用户是否通过身份验证。问题是,当我在重新加载时订阅组件中的主题时,主题 returns undefined.
这是我的实现,此方法检查用户数据是否存储在本地存储中。如果它们存储在本地存储中,则 Subject 应设置为 true。
user.service.ts
public auth_status:Subject<boolean> = new Subject<boolean>();
getCurrentUser(): User {
let storage = localStorage.getItem('current_user');
if (storage) {
return Json.parse(storage);
} else {
return null
}
};
getUserAuth() {
if (this.getCurrentUser() != null) {
this.auth_status.next(true);
console.log(this.auth_status);
} else {
this.auth_status.next(false);
console.log(this.auth_status);
}
return this.auth_status;
}
navbar.component.ts
constructor(private _userService: UserService) {
this._userService.getUserAuth().subscribe(data => this.auth_status = data);
}
this.auth_status 在我的导航栏中切换显示登录或退出按钮的 *ngIf
我也试过在订阅之前调用该方法,但这似乎不起作用。
谢谢!
事件在主题返回之前发出,因此当在构造函数中调用 subscribe()
时,事件已经消失。
您可以使用 BehaviorSubject
来防止类似
public auth_status:Subject<boolean> = new BehaviorSubject<boolean>(null);
A BehaviorSubject
在新订阅者订阅后立即向新订阅者发送最后一个事件。
我正在使用 Subject 来交流用户是否通过身份验证。问题是,当我在重新加载时订阅组件中的主题时,主题 returns undefined.
这是我的实现,此方法检查用户数据是否存储在本地存储中。如果它们存储在本地存储中,则 Subject 应设置为 true。
user.service.ts
public auth_status:Subject<boolean> = new Subject<boolean>();
getCurrentUser(): User {
let storage = localStorage.getItem('current_user');
if (storage) {
return Json.parse(storage);
} else {
return null
}
};
getUserAuth() {
if (this.getCurrentUser() != null) {
this.auth_status.next(true);
console.log(this.auth_status);
} else {
this.auth_status.next(false);
console.log(this.auth_status);
}
return this.auth_status;
}
navbar.component.ts
constructor(private _userService: UserService) {
this._userService.getUserAuth().subscribe(data => this.auth_status = data);
}
this.auth_status 在我的导航栏中切换显示登录或退出按钮的 *ngIf
我也试过在订阅之前调用该方法,但这似乎不起作用。
谢谢!
事件在主题返回之前发出,因此当在构造函数中调用 subscribe()
时,事件已经消失。
您可以使用 BehaviorSubject
来防止类似
public auth_status:Subject<boolean> = new BehaviorSubject<boolean>(null);
A BehaviorSubject
在新订阅者订阅后立即向新订阅者发送最后一个事件。