如何在以下代码中获得data.next()和data.complete()。这里的数据不就是观察者吗?
当我试图调用这些方法时,我得到了一个错误
组件。ts文件
this.authservice.registerform(form).subscribe(data => {
data. ?
this.ifsuccess = true;
this.timer = setInterval(() => {
this.router.navigate(['']);
}, 1200);});
Service.ts
registerform(data): Observable<any>{
return this.httpclient.post('http://localhost:3000/login',data);
}
我是Angular和rxjs的初学者。请帮帮忙。
这里的数据不作为观察者吗?
不,在您的示例中,data
是发出的("next")值。
当你订阅一个可观察对象时,你可以传递三个不同的参数,它们是next
,error
和complete
的处理程序。
的例子:
someObservable$.subscribe(
next => console.log(`next value is: ${next}`),
err => console.log(`error is: ${err}`),
() => console.log('someObservable$ completed!)
);
在您的示例中,您只向subscribe()
方法提供了第一个处理程序。您可以通过使用参数名data
:
this.authservice.registerform(form).subscribe(
data => {
// 'data' refers to the emitted value
this.ifsuccess = true;
this.timer = setInterval(() => {
this.router.navigate(['']);
}, 1200);
}
);
如果需要处理完成或错误,只需同时提供其他处理程序:
this.authservice.registerform(form).subscribe(
data => {
// 'data' refers to the emitted value
this.ifsuccess = true;
this.timer = setInterval(() => {
this.router.navigate(['']);
}, 1200);
},
error => console.log('error occurred!'),
() => console.log('registerform call completed')
);
也可以将完整的观察者对象传递给subscribe()
方法,而不是单独的处理程序方法:
const myObserver = {
next: val => console.log(`next val: ${next}`),
error: error => console.log(`error: ${error}`),
complete: () => console.log('complete!')
};
someObserver$.subscribe(myObserver);
这是一个带有示例的StackBlitz。