我在我的angular应用程序中有一个函数,当用户在文本框中输入一些数据以根据API验证数据时,该函数会被调用。除了对API的调用引起了我的问题之外,我得到了fin的工作。在我的旧代码中,我使用了promises,它工作得很好,但我正在尝试使用observable,这给我带来了问题。
下面是我调用的服务的代码。
validateUsername(username: string): Observable<IAPIResponse> {
const requestUrl = `/user/validateUserName/${username}`;
return this.httpservice.get<IAPIResponse>({
endpoint: this.baseUrl + requestUrl,
params: {}, })
.pipe(
map(result => result as IAPIResponse),
tap(result => console.log(result.Data))
);我的函数看起来像这样..
userNameAvail?: Observable<any>;
validateUsername(event: any){
console.log('New Username : ' + event.target.value);
this.userNameAvail = this.userservice.validateUsername(event.target.value);
console.log(this.userNameAvail);
})因此,我的问题是,要正确订阅该可观察对象并访问函数中的数据,我会遗漏什么。
发布于 2021-04-30 02:01:24
private subscriptionValidateUserName : Subscription;
validate(event: any){
console.log('New Username : ' + event.target.value);
this.subscriptionValidateUserName = this.userservice.validateUsername(event.target.value).subscribe( data -> {
console.log(data);
});;
})订阅后,您不能持有可观察对象。
你可以持有的是一个订阅,如果你不想稍后被意外触发,那么当你完成某件事情时,取消订阅是很重要的。如果您想取消订阅,那么只需执行this.subscriptionValidateUserName.unsubscribe();
https://stackoverflow.com/questions/67322759
复制相似问题