私の角型アプリケーションは、divで囲まれたヘッダー、メイン、フッターで構成されています。 ヘッダーの高さに応じて(反応します)、周囲のdivにパディングトップを設定する必要があります。角度:ExpressionChangedAfterItHasBeenCheckedError
これを行うには、app.componentから渡すheader.componentにheightという入力パラメータを追加しました。 ウィンドウ上で:resizeこのパラメータの値をoffsetHeightに設定し、app.componentが認識できるようにこの変更を発行します。 また、高さngOnInitを設定して初期高さを設定します。
これは私がコンソールに取得エラーから離れて素晴らしい作品:誰もがこのエラーで私を助けることができる
AppComponent.html:2 ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'undefined'. Current value: '160'.
at viewDebugError (core.js:9514)
at expressionChangedAfterItHasBeenCheckedError (core.js:9492)
at checkBindingNoChanges (core.js:9661)
at checkNoChangesNodeInline (core.js:13672)
at checkNoChangesNode (core.js:13646)
at debugCheckNoChangesNode (core.js:14454)
at debugCheckDirectivesFn (core.js:14356)
at Object.View_AppComponent_0._co [as updateDirectives] (AppComponent.html:2)
at Object.debugUpdateDirectives [as updateDirectives] (core.js:14338)
at checkNoChangesView (core.js:13486)
?
app.component.html
<div id="stage" [style.padding-top.px]="this.headerHeight">
<app-header [(height)]="this.headerHeight"></app-header>
...
</div>
header.component.ts
import { Component, ElementRef, Input, Output, EventEmitter, OnInit, HostListener } from '@angular/core';
import { OverlayComponent } from './../overlay/overlay.component';
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.scss'],
})
export class HeaderComponent implements OnInit {
@Input() height: number;
@Output() heightChange: EventEmitter<number> = new EventEmitter<number>();
constructor(private el: ElementRef) { }
ngOnInit(): void {
this.changeHeight()
}
@HostListener('window:resize')
changeHeight(): void {
this.height = this.el.nativeElement.offsetHeight;
this.heightChange.emit(this.height);
}
}
を取り除くために、明示的に後
のInvoke変化検出は) '再び変化検出をトリガする必要があります。 @GünterZöchbauerには洗練されたソリューションがありますが、現在のコンポーネントとその子のみを更新するかどうかはわかりません。 –
read ['ExpressionChangedAfterItHasBeenCheckedError'エラーについて知る必要があるすべて](https://blog.angularindepth.com/everything-you-need-to-know-about-the-expressionchangedafterithbascheckederror-error-e3fd9ce7dbb4)と私たちにお知らせください何が不明なのですか –