Sie verwenden die message
Eigenschaft der Child
Komponente in der Vorlage:
@Component({
selector: 'child-cmp',
template: `
<div>{{ message }}<input></div>`,
})
export class Child
Schrägläufe Erkennung (Check) für die child
Komponente ändern und aktualisieren den DOM. Dann erinnert es sich an den Wert, der zum Aktualisieren des DOM verwendet wurde. Dieser Wert wird während des Überprüfungsschritts verwendet, um zu überprüfen, ob sich die Bindungen nicht geändert haben. Das Problem besteht darin, dass Sie diesen Wert im Lebenszyklus-Hook ngAfterViewInit
ändern, und dieser Hook wird ausgelöst, nachdem die Komponente child
überprüft wurde. Wenn Angular die Überprüfung für die Komponente ausführt, bemerkt es, dass der Wert unterschiedlich ist. So wirft es den Fehler. Winkel erfordert einen zusätzlichen Änderungserkennungslauf zwischen der Prüf- und der Verifizierungsphase.
Wenn Sie wirklich den Wert im ngAfterViewInit
Lifecycle Haken aktualisieren müssen, es für das Kind Komponente asynchron oder laufen Änderungserkennung verwenden. Beide sind schlecht. Überlegen Sie, das Design der Anwendung zu ändern.
Siehe Everything you need to know about the ExpressionChangedAfterItHasBeenCheckedError
error Artikel, der die Ursachen für den Fehler und mögliche Korrekturen in großen Details erklärt.
Verwenden Sie ChangeDetectorRef wie in einer der Antworten. http://plnkr.co/edit/oGWe6zuOHyZVB38M1X3a?p=preview – Alex
Fügen Sie die wesentlichen Teile des Codes direkt zur Frage hinzu, anstatt nur auf externe Ressourcen zu verlinken. –