title: Angular2+ Change detection: markForCheck or detectChanges?
body: <p>Say, 
   - There’s a parent component A and a child component B. </p>
  
  <ul>
  <li><p>Set OnPush on the component B. </p></li>
  <li><p>One moment, a property of B which is not an input binding property changes and I want to detect the change and update the view accordingly. </p></li>
  <li><p>Based on my understanding, there should be 2 options. </p>
  
  <ol>
  <li><p>Implement <strong>ngDoCheck</strong> hook on B and call markForCheck method because we all know that the change of the property triggered the change detection flow from the A component and during the process, ngDoCheck in B will be called and markForCheck will mark the path up to the A(which is the root in this case) so that its change detection can be triggered as well despite the OnPush strategy.</p></li>
  <li><p>Call <strong>detectChanges</strong> right after the property change moment, which explains itself.</p></li>
  </ol></li>
  </ul>
  
  <p>In my opinion, both should work but I’m wondering which approach is more proper.</p>