如何在订阅期间从可观察的Angular 5 RxJS中检查NULL结果?

ton*_*nyf 0 observable rxjs typescript angular

使用Angular中的RxJS Observables

this.myService.getEmp(personEmpId).subscribe(
        result => {
            this.personName = result.person_name;
        },
        error => {
            console.log("EE:",error);
        }
    );
Run Code Online (Sandbox Code Playgroud)

如何测试我对该服务的订阅是否返回NULL结果,即根本找不到记录?

我尝试添加错误部分,但这没有触发控制台消息。

此刻,我似乎收到以下错误消息:

ERROR TypeError: "result is null"
Run Code Online (Sandbox Code Playgroud)

Lai*_*iso 7

您可以在订阅服务之前添加过滤器,如下所示:

// add this import on top of your source file
import { filter } from 'rxjs/operators'

this.myService.getEmp(personEmpId)
    .pipe(filter(result) => !!result)
    .subscribe(
        result => {
            this.personName = result.person_name;
        },
        error => {
            console.log("EE:",error);
        }
);
Run Code Online (Sandbox Code Playgroud)

如果要在Web服务不返回任何内容时添加某些功能,则可以在成功回调中执行以下操作:

this.myService.getEmp(personEmpId)
    .subscribe(
        result => {
            if (result) {
                this.personName = result.person_name;
            } else {
                // do something
            }
        },
        error => {
            console.log("EE:",error);
        }
);
Run Code Online (Sandbox Code Playgroud)