提问人:user20565161 提问时间:7/14/2023 更新时间:7/14/2023 访问量:147
Angular 等待 ngOnInit 中调用的可观察方法完成以继续执行
Angular wait for observable method called in ngOnInit to finish to continue execution
问:
我在ngOnInit中调用了一个方法,它设置了一个布尔标志。如果此标志为 true,我将继续进行验证。但是,该标志仍为 false,因为该方法是在之后调用的。 请问如何处理?
ngOnInit(){
this.hasDependent();
if(this.hasAnyDependent(){
//continue logic
}
}
hasDependent(){
this.employeeService.hasDep(null).sub
scribe(
(data) => {
this.hasAnyDependent = data;
}
err => toast.error("Error")
)
}
答:
0赞
jagmitg
7/14/2023
#1
这是一个异步操作 - 该函数调用返回可观察对象的服务方法。hasDependent()
hasDep()
因此,当您调用 时,这将在订阅返回之前执行,因此尚未设置。if(this.hasAnyDependent())
hasAnyDependent
我建议使用 RxJS 和 hasAnyDependent' 标志。pipe()
tap() functions to handle the side effect of setting
示例如下:
ngOnInit(){
this.hasDependent().subscribe(hasDep => {
if(hasDep) {
// continue logic
}
},
err => toast.error("Error"));
}
hasDependent(): Observable<boolean>{
return this.employeeService.hasDep(null).pipe(
tap((data) => {
this.hasAnyDependent = data;
}),
first()
);
}
评论