在Angular中使用ngrx进行状态管理时,有时候在使用rxjs操作符时会造成一些编译错误。特别是在使用tap()操作符时,有时候会提示“Property 'XXX' does not exist on type 'Observable'”之类的错误。
解决方法就是引入tap操作符(import { tap } from 'rxjs/operators';),例如:
import { Component } from '@angular/core'; import { Store } from '@ngrx/store'; import { tap } from 'rxjs/operators';
@Component({
selector: 'app-example',
template:
})
export class ExampleComponent {
message: string;
constructor(private store: Store<{}>) { this.store .select('example') .pipe( tap((data) => console.log(data)) ) .subscribe((data) => (this.message = data.message)); } }
在以上示例中,tap()操作符用来在获取数据之前输出log,它并不会改变observable的值。如果不加tap()操作符,则这段代码将会编译失败。