http://embed.plnkr.co/oGlcQSOM2vFcDEKP7thV/
$injector.has('myMessageDirective')
返回 true,while$injector.has('myMessageComponent')
不返回
有人为此苦苦挣扎或有解决方案吗?我的“恐惧”是由于指令检查,我的组件可能在未来的更新中找不到。
跟进问题:检查是否存在 Angular 指令
http://embed.plnkr.co/oGlcQSOM2vFcDEKP7thV/
$injector.has('myMessageDirective')
返回 true,while$injector.has('myMessageComponent')
不返回
有人为此苦苦挣扎或有解决方案吗?我的“恐惧”是由于指令检查,我的组件可能在未来的更新中找不到。
跟进问题:检查是否存在 Angular 指令
归根结底,组件被注册为指令,因此确实需要“指令”后缀。
检查 $injector 对象的 'has' 方法:
return {
invoke: invoke,
instantiate: instantiate,
get: getService,
annotate: createInjector.$$annotate,
has: function(name) {
return providerCache.hasOwnProperty(name + providerSuffix) || cache.hasOwnProperty(name);
}
};
您可以调试它并查看所有组件(在缓存对象内)都注册为指令。没有“组件”后缀。
我认为,最简单的方法是向id
指令/组件的容器添加一个属性,然后检查是否id
存在具有此属性的元素。