我很难升级到RC6。我有多个模块,我得到运行时错误,说组件不是模块的一部分。我尝试将所有内容放在app.module中,但这并没有解决它。
有没有办法告诉(在运行时)组件属于哪个模块?我只需要排除故障。
这是我的错误:
无法绑定到'fullList',因为它不是已知的属性 “自动填充组分”。 1.如果'autocomplete-component'是一个Angular组件并且它有'fullList'输入,那么请确认它是该模块的一部分。
看起来自动完成组件定义为它应该是。这是app.module中的一个声明。现在我将其移动到共享模块并将其导入我的所有模块中。我仍然得到错误。
我需要一种方法来在运行时验证自动完成组件确实在te模块中。另外,我需要确保使用它的组件位于我认为的模块中。它是由一条路线装载的。
答案 0 :(得分:0)
模块的每个组件都必须在ngModule的Declarations []部分中声明。完成后,模块可以找到其组件,角度预扫描可以找到组件。
答案 1 :(得分:0)
您可以尝试以下,
import { Compiler} from '@angular/core';
constructor(private _compiler: Compiler) {}
checkComponentInModule(selector){
// loop over all your imported Module
this._compiler.compileModuleAndAllComponentsAsync(<module>).then(_module => {
let _componentFactories = _module.componentFactories.filter(_c => {
return _c.selector == selector;
});
if (!!_componentFactories && _componentFactories.length > 0) {
// Yay Component exists in this module!!
}
});
}
模块必须导出您正在检查的组件。
希望这会有所帮助!!