在使用angular cli创建的组件中,我从未添加import 'rxjs/add/operator/first';
然而,使用this.route.params.first()
仍然有用。为什么呢?
是否可以不必在每个文件中导入大量运算符?
答案 0 :(得分:3)
像
这样的进口import 'rxjs/add/operator/first';
看到操作员修补了Observable
原型。请参阅the source。
此类导入不需要基于每个文件进行。它们只需要导入一次 - 之后,操作符可以通过原型调用。
此外,如果您要导入的另一个库恰好使用该导入,则原型将被修补并且操作员将可用。出于这个原因,一些库(如Angular)显式导入运算符而无需修补原型。 (这样,客户端代码将不依赖于Angular已经实施的任何原型修补导入,并且可以在不破坏客户端代码的情况下删除Angular中的导入。)
the docs中有关于各种导入机制的更多信息。