anchor.diff:    /// Putting the function on a [Timer] with 0 delay is basically the same as `setTimeout(f, 0)` in JavaScript and as such runs after
     /// the current change detection cycle.
     /// see https://github.com/angular/angular/issues/6005
  -  void runOutsideChangeDetection(f()) {
  +  Future runOutsideChangeDetection(f()) {
  +    var completer = new Completer();
       new Timer(const Duration(seconds: 0), () {
         f();
         //we'd need to notify parent components, specifically dime-box as well,
         // but for that we'd need to run full change detection with [ApplicationRef#tick] or something similar
         changeDetector.detectChanges();
  +      completer.complete();
       });
  +    return completer.future;
     }
   
     void saveAllEntities() {
  
positive.code:     this.statusservice.setStatusToLoading();
      try {
        T updated = await store.update(entity);
        runOutsideChangeDetection(() {
          var index = map.remove(entity);
          map.insert(index, updated);
        });
  
negative.code:       await postProcessEntities(entities);
        entities.forEach(map.add);
  
        await runOutsideChangeDetection(() {
          if (overview == null) {
            //sometimes the element that our control should be attached to is not set by angular. Not sure why that happens,
            //but validation appears to be working fine later anyway.
  