An Input property is a settable property annotated with an @Input decorator. Values flow into the property when it is data bound with a property binding.


@Input() test: any;

Alternatively, you can identify members in the inputs array of the directive metadata:

  inputs: ['test'],


@Input(propertyBindingName: string)


You can supply an optional name to use in templates when the component is instantiated, that maps to the name of the bound property. By default, the original name of the bound property is used for input binding.

bindingPropertyName: string

The following example creates a component with two input properties, one of which is given a special binding name.

  selector: 'bank-account',
  template: `
    Bank Name: {{bankName}}
    Account Id: {{id}}
class BankAccount {
  // This property is bound using its original name.
  @Input() bankName: string;
  // this property value is bound to a different property name
  // when this component is instantiated in a template.
  @Input('account-id') id: string;

  // this property is not bound, and is not automatically updated by Angular
  normalizedBankName: string;

  selector: 'app',
  template: `
    <bank-account bankName="RBC" account-id="4747"></bank-account>
class App {}