在Angular 8中,如果在订阅之前进行过滤,并且过滤器返回null,将不会触发订阅。可以使用pipe
操作符和filter
操作符来实现这个功能。下面是一个示例代码:
import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs';
import { filter } from 'rxjs/operators';
@Component({
selector: 'app-my-component',
template: `
My Component
`,
})
export class MyComponent implements OnInit {
data$: Observable;
ngOnInit() {
this.data$ = this.getData().pipe(
filter(data => data !== null)
);
this.data$.subscribe(data => {
console.log(data);
});
}
getData(): Observable {
// 模拟异步获取数据
return new Observable(observer => {
setTimeout(() => {
const data = null; // 这里的数据是null,过滤器将过滤掉这个数据
observer.next(data);
observer.complete();
}, 1000);
});
}
}
在上面的代码中,getData
方法返回的是一个Observable对象,模拟了异步获取数据的过程。在ngOnInit
方法中,我们通过使用pipe
操作符和filter
操作符,将过滤器应用于数据流。如果过滤器返回null,则不会触发订阅,并且不会执行后续的代码。