尝试在初始化时将本地存储中的值作为参数传递给另一个函数 (Angular 11)
Trying to pass value from local storage as an argument to another function on initialization (Angular 11)
我正在从本地存储中获取一个值(我已将其放入 console.log,它按预期返回):
getBranchId(): Observable<any>
{
const branchId = localStorage['branch'];
return of (branchId);
}
我想在组件初始化时将上述函数返回的值设置为另一个函数的参数。我做了以下事情:
populateTable() {
const id = this.branchService.getBranchId();
id.subscribe(resp => {
this.branchService.getBranchStock(resp).subscribe(
(resp: any) => {
// Do something with resp
},
(error: HttpErrorResponse) => {
console.log(error);
}
)
})
}
然后我 运行 ngOnInit 中的“populateTable()”函数如下:
ngOnInit(): void {
this.populateTable()
}
上面returns一个POST415错误,命中了第二次订阅的http错误响应。但是,当发送任何其他值时,例如。 “45”如下:
this.subs.add(this.branchService.getBranchStock(45).subscribe(...)
一切正常。我假设问题是所有东西都同时 运行 在一起,并且 resp 获取的速度不够快,无法发送到第二个函数。这个问题有什么解决方法吗?
我的猜测是 API 不喜欢您发送的字符串。 localStorage
以字符串 (JSON) 格式存储内容。所以在获取的时候需要先转换这个:
getBranchId(): Observable<any> {
const branchId = JSON.parse(localStorage.getItem('branch'));
return of(branchId);
}
我正在从本地存储中获取一个值(我已将其放入 console.log,它按预期返回):
getBranchId(): Observable<any>
{
const branchId = localStorage['branch'];
return of (branchId);
}
我想在组件初始化时将上述函数返回的值设置为另一个函数的参数。我做了以下事情:
populateTable() {
const id = this.branchService.getBranchId();
id.subscribe(resp => {
this.branchService.getBranchStock(resp).subscribe(
(resp: any) => {
// Do something with resp
},
(error: HttpErrorResponse) => {
console.log(error);
}
)
})
}
然后我 运行 ngOnInit 中的“populateTable()”函数如下:
ngOnInit(): void {
this.populateTable()
}
上面returns一个POST415错误,命中了第二次订阅的http错误响应。但是,当发送任何其他值时,例如。 “45”如下:
this.subs.add(this.branchService.getBranchStock(45).subscribe(...)
一切正常。我假设问题是所有东西都同时 运行 在一起,并且 resp 获取的速度不够快,无法发送到第二个函数。这个问题有什么解决方法吗?
我的猜测是 API 不喜欢您发送的字符串。 localStorage
以字符串 (JSON) 格式存储内容。所以在获取的时候需要先转换这个:
getBranchId(): Observable<any> {
const branchId = JSON.parse(localStorage.getItem('branch'));
return of(branchId);
}