Angular 2


This draft deletes the entire topic.

inline side-by-side expand all collapse all

Examples

  • 1

    Consider the following component with one input myInput and an internal value called someInternalValue. Both of them are used in a component's template.

    import {Component, Input} from '@angular/core';
    
    @Component({
      template:`
      <div>
        <p>{{myInput}}</p>
        <p>{{someInternalValue}}</p>
      </div>
      `
    })
    class MyComponent {
      @Input() myInput: any;
    
      someInternalValue: any;
    
      // ...
    }
    

    By default, the changeDetection: property in the component decorator will be set to ChangeDetectionStrategy.Default; implicit in the example. In this situation, any changes to any of the values in the template will trigger a re-render of MyComponent. In other words, if I change myInput or someInternalValue angular 2 will exert energy and re-render the component.

    Suppose, however, that we only want to re-render when the inputs change. Consider the following component with changeDetection: set to ChangeDetectionStrategy.OnPush

    import {Component, ChangeDetectionStrategy, Input} from '@angular/core';
    
    @Component({
      changeDetection: ChangeDetectionStrategy.OnPush
      template:`
      <div>
        <p>{{myInput}}</p>
        <p>{{someInternalValue}}</p>
      </div>
      `
    })
    class MyComponent {
      @Input() myInput: any;
    
      someInternalValue: any;
    
      // ...
    }
    

    By setting changeDetection: to ChangeDetectionStrategy.OnPush, MyComponent will only re-render when its inputs change. In this case, myInput will need to receive a new value from its parent to trigger a re-render.

I am downvoting this example because it is...

Syntax

Syntax

Parameters

Parameters

Remarks

Remarks

Still have question about Optimizing rendering using ChangeDetectionStrategy? Ask Question

Default vs OnPush

1

Consider the following component with one input myInput and an internal value called someInternalValue. Both of them are used in a component's template.

import {Component, Input} from '@angular/core';

@Component({
  template:`
  <div>
    <p>{{myInput}}</p>
    <p>{{someInternalValue}}</p>
  </div>
  `
})
class MyComponent {
  @Input() myInput: any;

  someInternalValue: any;

  // ...
}

By default, the changeDetection: property in the component decorator will be set to ChangeDetectionStrategy.Default; implicit in the example. In this situation, any changes to any of the values in the template will trigger a re-render of MyComponent. In other words, if I change myInput or someInternalValue angular 2 will exert energy and re-render the component.

Suppose, however, that we only want to re-render when the inputs change. Consider the following component with changeDetection: set to ChangeDetectionStrategy.OnPush

import {Component, ChangeDetectionStrategy, Input} from '@angular/core';

@Component({
  changeDetection: ChangeDetectionStrategy.OnPush
  template:`
  <div>
    <p>{{myInput}}</p>
    <p>{{someInternalValue}}</p>
  </div>
  `
})
class MyComponent {
  @Input() myInput: any;

  someInternalValue: any;

  // ...
}

By setting changeDetection: to ChangeDetectionStrategy.OnPush, MyComponent will only re-render when its inputs change. In this case, myInput will need to receive a new value from its parent to trigger a re-render.

Topic Outline