Component Metadata

According to the official documentation, you can use the following set of properties with a @Component decorator:

changeDetectionChangeDetectionStrategyDefines the change detection strategy the component should use.
viewProvidersProvider[]Defines the set of injectable objects that are visible to its view DOM children.
moduleIdstringES/CommonJS module id of the file in which this component is defined.
templateUrlstringSpecifies a URL containing a relative path to an external file containing a template for the view.
templatestringAn inline-defined template for the view.
styleUrlsstring[]List of URLs containing relative paths to the stylesheets to apply to this component's view at runtime.
stylesstring[]List of inline-defined styles to apply to this component's view at runtime.
animationsany[]List of animations of this component in a special DSL-like format.
encapsulationViewEncapsulationDefines style encapsulation strategy used by this component.
interpolation[string, string]Overrides the default encapsulation start and end delimiters (respectively {{ and }}).
entryComponentsArray<Type<any> | any[]>List of components that are dynamically inserted into the view of this component.

The @Component decorator extends the @Directive one, so it also inherits the following set of properties you can use as well:

selectorstringCSS selector that identifies this component in a template.
inputsstring[]List of class property names to data-bind as component inputs.
outputsstring[]List of class property names that expose output events that others can subscribe to.
host{ [key: string]: string; }Map that specifies the events, actions, properties and attributes related to the host element.
providersProvider[]List of providers available to this component and its children.
exportAsstringA name under which the component instance is exported in a template.
queries{ [key: string]: any; }Map of queries that can be injected into the component.