ChangeDetectionStrategy.OnPush et Observables.abonnez-vous dans Angulaire 2

Je suis d'essayer d'envelopper ma tête autour des meilleures pratiques lors de l'utilisation des Observables aux côtés de ChangeDetectionStrategy.OnPush.

L'exemple montre le scénario commun de vouloir montrer une sorte de message de chargement (ou une simple toupie d'animation peut-être):

Plnkr ici

@Component({
  selector: 'my-app',
  template: `Are we loading?: {{loadingMessage}}`,

  //Obviously "Default" will notice the change in `loadingMessage`...
  //changeDetection: ChangeDetectionStrategy.Default

  //But what is best practice when using OnPush?
  changeDetection: ChangeDetectionStrategy.OnPush
})
export class App implements OnInit {

  private loadingMessage = "Wait for it...";

  constructor() {

  }

  ngOnInit() {

    //Pretend we're loading data from a service.
    //This component is only interested in the call's success
    Observable.of(true)
      .delay(2000)
      .subscribe(success => {

        if(success){
          console.log('Pretend loading: success!');

          //OnPush won't detect this change
          this.loadingMessage = 'Success!';
        }

      });

  }
}

J'ai plus ou moins de comprendre l'exigence de l'immutabilité avec OnPush et, pour moi, au moins, elle n'a de sens lorsque l'on parle de réel modèle de données (probablement eu lieu dans une sorte de magasin).

Donc, j'ai deux questions:

  1. Pourquoi ne pas l'affectation de la nouvelle chaîne de valeur 'Success!' déclencher le changement de détecteur? Aussi loin que l'immuabilité est en cause, valeur a changé, non?
  2. Comment doit-léger composant interne de l'état (c'est à dire. loadingMessage) être mis en œuvre lors de l'utilisation de ChangeDetectionStrategy.OnPush? S'il y a plusieurs bonnes pratiques, merci de me pointer dans la bonne direction.