compileComponents
的文档无益地说明了这一点:
使用
templateUrl
为测试的NgModule编译组件。有必要调用此函数,因为获取URL是异步的。
然而,这并没有解释在什么情况下调用这个函数是“必要的”,也没有解释不这样做的后果。我目前正在处理的应用程序对具有templateUrl
s的组件进行单元测试,这些测试涉及使用By.css
查看DOM,但即使我们从不调用compileComponents
它们似乎也能正常工作我们代码库中的任何地方。同时,互联网上还有其他帖子,例如https://github.com/angular/angular-cli/pull/4757,表明不需要调用compileComponents
。
在什么情况下我应该称这种方法为什么?
答案 0 :(得分:8)
在什么情况下我应该称这种方法为什么?
如果您正在使用webpack(如果配置正确),则构建会将templateUrl
编译为内联template
和styleUrls
到styles
。因此,不需要compileComponents
,因为就像您使用template
和styles
一样,即使您不是。{/ p>
例如,如果您正在使用SystemJS(或者您没有执行此预编译/转换的其他构建步骤),则不会发生这种情况。 Angular需要发出XHR请求来检索外部模板和外部样式,然后进行编译。在这里,您需要compileComponents
。
WebPack开发人员无需调用
compileComponents
,因为它会将模板和css内联为运行测试之前的自动构建过程的一部分。