anchor.diff:    providers: [
       ExistingProvider(HasValue, ChildWithExistingProvider),
     ],
  +  changeDetection: ChangeDetectionStrategy.OnPush,
   )
   class ChildWithExistingProvider implements HasValue {
     var value = '';
  
positive.code:   template: '<ng-content></ng-content>',
  )
  class HasContentChildren {
    HasContentChildren(this._changeDetectorRef);
  
    // ignore: unused_field
    final ChangeDetectorRef _changeDetectorRef;
  
    @ContentChildren(Child)
    List<Child> children;
  
    void update(String value) {
      for (final child in children) {
        child.value = value;
        // TODO: _changeDetectorRef.markChildForCheck(child);
      }
  
negative.code:   directives: [Child, NgIf],
  )
  class TestEmbeddedViewChildren {
    TestEmbeddedViewChildren(this._changeDetectorRef, this._ngZone);
  
    final ChangeDetectorRef _changeDetectorRef;
    final NgZone _ngZone;
  
    var isSecondChildVisible = false;
    var areRemainingChildrenVisible = false;
  
    List<Child> _children = [];
    var _value = '';
  
    @ViewChildren(Child)
    set children(List<Child> value) {
      _children = value;
      _ngZone.runAfterChangesObserved(() => update(_value));
    }
  
    void update(String value) {
      _value = value;
      for (final child in _children) {
        child.value = value;
        // TODO: _changeDetectorRef.markChildForCheck(child);
      }
    }
  }
  