登录时,我正在对服务器进行邮寄并获取了一些数据。我想将该数据保存到我的BehaviorSubject。尽管它已更新,但是当我订阅它以将其添加到另一个组件时,我正在获取它的初始值。
login.service.ts:
@Injectable({
providedIn: 'root'
})
export class LoginService {
private data = new BehaviorSubject('default');
public cData = this.data.asObservable();
constructor(private router: Router, private httpClient: HttpClient) { }
public login(userName: string, password: string): Observable<any> {
const options: any = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
}),
};
return this.httpClient.post<any>(`/login`, { username: userName, password }, options)
.pipe(
tap((result: any) => {
this.changeData(result.data);
this.router.navigateByUrl('/main-page');
return;
}),
catchError(error => {
return of(error);
})
);
}
public changeData(data: string): void {
this.data.next(data);
}
login.component.ts :
public onSubmit(loginForm: NgForm): void {
this.loginService.login(loginForm.value.username, loginForm.value.password).subscribe((result) => {
this.loginService.cDataa.subscribe(data => {
console.log(data); //I AM GETTING THE DATA
});
});
}
main-page.component.ts :
public ngOnInit(): void {
this.loginService.cDataa.subscribe(data => {
console.log(data); //I AM NOT GETTING THE DATA BUT I GET default
});
}
在 main-page.module.ts 中,我将LoginService插入了提供程序。