如何在下面的代码中获得data.next()和data.complete() ?



如何在以下代码中获得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,errorcomplete的处理程序。

的例子:

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。

最新更新