私は非常に基本的なangular2 Webアプリケーションを持っています。 DOMを編集するコードを追加できる適切な場所/フックを知りたい。Angular2でDOMを編集するライフサイクルフック
私はngAfterViewInitに置くしようとしたとき、私は次のエラー
ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked.
に私はそれがとても
setTimeout(_ => {
.... code comes here ...
})
のようなタイムアウトに私のコードをラップするためにそれを動作させるために見つけた唯一の方法を参照してくださいこれは正しい方法ではありません。何かご意見は?
コンポーネントのJSコード
export class LandingPageComponent implements OnInit {
techImageSize = "100"
constructor() { }
ngOnInit() {
}
ngAfterViewInit(){
setTimeout(_ => {
var w = $("[data-container=tech-images]").width();
this.techImageSize = Math.floor(w/4) + "";
})
}
}
関連テンプレートコード:
<div class="col-md-5" data-container="tech-images">
<div class="" style='overflow: auto'>
<tech-image image='heroku-logo.png' [size]="techImageSize"></tech-image>
<tech-image image='surge-logo.svg' [size]="techImageSize"></tech-image>
<tech-image image='swift-logo.png' [size]="techImageSize"></tech-image>
<tech-image image='heroku-logo.png' [size]="techImageSize"></tech-image>
</div>
</div>
とあなたのコードですか...? – smnbbrv
@smnbbrv投稿を更新しました、ありがとうございます! –
コンポーネントテンプレートHTMLも表示されますか?少なくとも関連する 'data-container =" tech-images "要素の場合。私は次元の1つが 'this.techImageSize'に設定されていると推測していますが、これは変更検出サイクル中に発生します。 –