@@ -21,6 +21,7 @@ import {DirectiveResolver} from './directive_resolver';
2121import { Identifiers , identifierToken } from './identifiers' ;
2222import { NgModuleResolver } from './ng_module_resolver' ;
2323import { PipeResolver } from './pipe_resolver' ;
24+ import { ElementSchemaRegistry } from './schema/element_schema_registry' ;
2425import { getUrlScheme } from './url_resolver' ;
2526import { MODULE_SUFFIX , ValueTransformer , sanitizeIdentifier , visitValue } from './util' ;
2627import { ViewResolver } from './view_resolver' ;
@@ -38,6 +39,7 @@ export class CompileMetadataResolver {
3839 private _ngModuleResolver : NgModuleResolver , private _directiveResolver : DirectiveResolver ,
3940 private _pipeResolver : PipeResolver , private _viewResolver : ViewResolver ,
4041 private _config : CompilerConfig , private _console : Console ,
42+ private _schemaRegistry : ElementSchemaRegistry ,
4143 private _reflector : ReflectorReader = reflector ) { }
4244
4345 private sanitizeTokenName ( token : any ) : string {
@@ -124,6 +126,7 @@ export class CompileMetadataResolver {
124126 var viewProviders : Array < cpl . CompileProviderMetadata | cpl . CompileTypeMetadata | any [ ] > = [ ] ;
125127 var moduleUrl = staticTypeModuleUrl ( directiveType ) ;
126128 var entryComponentTypes : cpl . CompileTypeMetadata [ ] = [ ] ;
129+ let selector = dirMeta . selector ;
127130 if ( dirMeta instanceof ComponentMetadata ) {
128131 var cmpMeta = < ComponentMetadata > dirMeta ;
129132 var viewMeta = this . _viewResolver . resolve ( directiveType ) ;
@@ -155,6 +158,14 @@ export class CompileMetadataResolver {
155158 flattenArray ( cmpMeta . entryComponents )
156159 . map ( ( cmp ) => this . getTypeMetadata ( cmp , staticTypeModuleUrl ( cmp ) ) ) ;
157160 }
161+ if ( ! selector ) {
162+ selector = this . _schemaRegistry . getDefaultComponentElementName ( ) ;
163+ }
164+ } else {
165+ if ( ! selector ) {
166+ throw new BaseException (
167+ `Directive ${ stringify ( directiveType ) } has no selector, please add it!` ) ;
168+ }
158169 }
159170
160171 var providers : Array < cpl . CompileProviderMetadata | cpl . CompileTypeMetadata | any [ ] > = [ ] ;
@@ -170,7 +181,7 @@ export class CompileMetadataResolver {
170181 viewQueries = this . getQueriesMetadata ( dirMeta . queries , true , directiveType ) ;
171182 }
172183 meta = cpl . CompileDirectiveMetadata . create ( {
173- selector : dirMeta . selector ,
184+ selector : selector ,
174185 exportAs : dirMeta . exportAs ,
175186 isComponent : isPresent ( templateMeta ) ,
176187 type : this . getTypeMetadata ( directiveType , moduleUrl ) ,
0 commit comments