2017-02-20 3 views
1

Ich habe eine Eigenschaft in meinem appComponent.ts:ngOnChanges Brennen nicht, wenn gleichen Wert aktualisiert wird wieder

this._userMessage 

Dann ist es das Senden childComponent durch:

<child-component [p_sUserMessage]='_userMessage'></child-component> 

In childComponent.ts:

@Input() p_sUserMessage: string = ''; 
ngOnChanges(): void { 
console.log(this.p_sUserMessage); 
} 

Nun ist die Frage, die ich bin vor ist:

  • Wenn ich sende 'hi' ngOnChanges wird gefeuert.
  • Nun, wenn wieder 'hi' gesendet wird ngOnChanges wird nicht ausgelöst.
+2

Sein nicht sein sollte, knapp über die Eingabe ändern. – Zyga

+0

Können Sie mir eine andere Methode vorschlagen, über die meine childComponent benachrichtigt werden kann? –

+0

Hängt vom genauen Anwendungsfall ab. Sie könnten Shared-Service-Ansatz verwenden (z. B. emittieren und subskribieren Observablen) oder potenziell die ngDoCheck() -Methode verwenden, aber wie gesagt, hängt davon ab, was Sie erreichen möchten. – Zyga

Antwort

0

Ich verwende die folgende Lösung

this._userMessage=3; 
    setTimeout((() => { 
    this._userMessage = null; 
    }).bind(this), 300); 


<child-component [p_sUserMessage]='_userMessage'></child-component> 


@Input() p_sUserMessage: string = ''; 
ngOnChanges(changes: SimpleChanges): void { 
    if (changes["p_sUserMessage"]!=undefined) 
    { 
    if (changes["p_sUserMessage"].currentValue!=null) 
    { 
    console.log(changes["p_sUserMessage"].currentValue); 
    } 
    } 
} 

Wenn ich wieder this._userMessage zuweisen = 3, dann ngOnChanges wieder vollständig

Verwandte Themen