Angular2 - 我可以告诉组件在运行时是哪个模块的成员?

时间:2016-09-09 15:15:31

标签: angular

我很难升级到RC6。我有多个模块,我得到运行时错误,说组件不是模块的一部分。我尝试将所有内容放在app.module中,但这并没有解决它。

有没有办法告诉(在运行时)组件属于哪个模块?我只需要排除故障。

这是我的错误:

  

无法绑定到'fullList',因为它不是已知的属性   “自动填充组分”。   1.如果'autocomplete-component'是一个Angular组件并且它有'fullList'输入,那么请确认它是该模块的一部分。

看起来自动完成组件定义为它应该是。这是app.module中的一个声明。现在我将其移动到共享模块并将其导入我的所有模块中。我仍然得到错误。

我需要一种方法来在运行时验证自动完成组件确实在te模块中。另外,我需要确保使用它的组件位于我认为的模块中。它是由一条路线装载的。

2 个答案:

答案 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!!
            }
        });
}

模块必须导出您正在检查的组件。

希望这会有所帮助!!