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

How to get data.next() and data.complete() here in the following code?

如何在以下代码中获取 data.next() 和 data.complete()。这里的数据不是充当观察者的角色吗?

当我尝试调用这些方法时出现错误

component.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 的初学者。请帮忙解决这个问题。

isn't data here acts as observer?

不,在您的示例中 data 是发出的(“下一个”)值。

当您订阅一个可观察对象时,您可以传递三个不同的参数,它们是 nexterrorcomplete 的处理程序。

示例:

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 示例。