title: Calling ngZone.runTask in ngZone.runOutsideAngular still triggering change detection in other components
body: <p>I am trying to run a task after 3 seconds using setTimeout in Angular, but I am trying to do it without triggering change detection throughout the entire application. </p>
  
  <p>I tried running the setTimeout outside of Angular zone and re-enter the zone to run the callback task of the setTimeout. But as soon as I renter the zone, it is triggering the change detection throughout the application</p>
  
  <p>I have this specific code:</p>
  
  <pre><code>ngOnInit() {
      this.ngZone.runOutsideAngular(() =&gt; {
        setTimeout(() =&gt; {
          this.ngZone.runTask(() =&gt; {
            console.log("SHOULD NOT TRIGGER CHANGE DETECTION IN OTHER DIRECTIVES");
          });
        }, 3000);
      });
    }
  
  </code></pre>
  
  <p>for a broader view of the code, I have this stackblitz example:
  <a href="https://stackblitz.com/edit/runoutside-ng-runinside?file=src/app/app.module.ts" rel="nofollow noreferrer">https://stackblitz.com/edit/runoutside-ng-runinside?file=src/app/app.module.ts</a></p>
  
  <p>My expectation is as long as I am running setTimeout outside of Angular zone, it shouldn't trigger the change detection. I only want to activate change detection when I reach the tasks inside the setTimeout so that I could <strong>keep the change detection within the component, not throughout the entire app components</strong>. However, currently, as soon as I re-enter the Angular zone, it's triggering the change detection in other components as well.</p>