如何检查Angular 1.5中是否存在组件

时间:2016-10-12 06:47:56

标签: javascript angularjs angularjs-directive angular-components

http://embed.plnkr.co/oGlcQSOM2vFcDEKP7thV/

$injector.has('myMessageDirective')返回true,而$injector.has('myMessageComponent')则不返回

有人在努力解决这个问题还是有解决方案?我的恐惧"是因为指令检查,未来的更新中可能找不到我的组件。

跟进问题:Check if an Angular directive exists

2 个答案:

答案 0 :(得分:1)

在一天结束时,一个组件被注册为指令,因此指令'确实需要后缀。

检查' $ injector对象的方法:

return {
  invoke: invoke,
  instantiate: instantiate,
  get: getService,
  annotate: createInjector.$$annotate,
  has: function(name) {
    return providerCache.hasOwnProperty(name + providerSuffix) || cache.hasOwnProperty(name);
  }
};

您可以对其进行调试,并查看所有组件(在缓存对象内)是否已注册为指令。没有'组件'后缀。

答案 1 :(得分:0)

我认为,最简单的方法是在指令的/组件容器中添加id属性,然后检查是否存在具有此id的元素。