2

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

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

有人为此苦苦挣扎或有解决方案吗?我的“恐惧”是由于指令检查,我的组件可能在未来的更新中找不到。

跟进问题:检查是否存在 Angular 指令

4

2 回答 2

1

归根结底,组件被注册为指令,因此确实需要“指令”后缀。

检查 $injector 对象的 'has' 方法:

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

您可以调试它并查看所有组件(在缓存对象内)都注册为指令。没有“组件”后缀。

于 2018-04-20T09:22:13.433 回答
0

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

于 2016-10-12T06:51:22.023 回答