我在我的角度服务中使用了rxjs map和switchMap运算符,而vs代码建议我从以下2条导入语句中进行选择。我没有注意到太多,但是选择了第一个选项并继续。没有编译时错误。但是出现了运行时错误,无论如何也无法帮助我理解实际问题。在花费了几个小时之后,我认为可能是import语句的原因,并将其更改为后者的建议,并且有效。这两种进口有什么区别?什么是内部rxjs运算符?我们可以在任何地方使用它们吗?
import { switchMap } from 'rxjs/internal/operators/switchMap';
import { switchMap } from 'rxjs/operators';
CanActivate接口也发生了同样的事情。以下是2个import语句。只有后者在工作。第一个给出编译时错误,这再次没有任何帮助。
import { CanActivate } from '@angular/router/src/utils/preactivation';
import { CanActivate } from '@angular/router';
答案 0 :(得分:1)
是的,您在自动导入时也要小心,它们过去也曾咬住我。
尝试仅从公共API自动导入。除非您真的知道发生了什么,否则通常标记为Internal的任何东西都应该远离。自从rxjs(v6)的最新重大更新以来,它们确实解决了来自许多来源的所有怪异进口问题。您有99%的时间想从'rxjs'或'rxjs / operators'中为操作员导入。
我不知道您可以在vscode中调整任何设置,或多或少只是您需要关注的内容。如果您导入任何东西,并且看起来超过两个层次,我会非常警惕使用它。通常,它是顶级导入(如“ rxjs”)或两级导入(如“ @ angular / router”);