In meinem eckigen Projekt habe ich zwei Tabellen. Eine der Tabellen wird mit Daten aus einem Service geladen, und bei ngOnInit werden diese Daten zurückgegeben.Wann Funktion aufrufen, die Breite der Elemente berechnet?
Ich berechne die Breite der Kopfzeilenspalten und wende sie an eine andere Tabelle an. Und ich rufe this.resizeColumn() Funktion auf:
ngAfterViewInit() {
this.resizeColumns();
}
Und auch auf:
@HostListener('window:resize')
onResize() {
this.resizeColumns();
}
Das Problem ist, dass, wenn die Seite zum ersten Mal geöffnet wird, die Breiten, die berechnet werden werden noch nicht angewendet. Sobald ich das Fenster verkleinere, stimmen die beiden Header überein. Die Idee ist, dass, wenn sich die Tabellenbreite ändert, diese Funktion auch aufgerufen werden soll. Nach welchem Event oder Lifecycle-Hook sollte ich resizeColumn aufrufen, so dass anfänglich beide Tabellen die gleiche Spaltenbreite haben?
Obwohl scheint nicht gerade ein Duplikat zu mir, haben einen Blick auf diese Frage und die Kommentare für die akzeptierte Antwort https://stackoverflow.com/questions/47729202/change-element-width-dynamically- on-angular-5 –
Vielen Dank. Ich habe es gelesen und habe einfach den gleichen Code ausprobiert, der in der angenommenen Antwort enthalten war. Aber das löst mein Problem nicht. Weil, sobald ich die Größe des Fensters ändere, dann erhält der Tabellenkopf die Werte. Ich habe versucht, etwas wie folgt zu implementieren: [link] (https://jsfiddle.net/pu4q1931/3/) Aber wie Sie sehen können, hat die Geige dieses Problem nicht, weil es JS hat. Ich weiß nicht, wie man dasselbe in eckigen tut, so dass, sobald das Programm ausgeführt wird, es diese Breiten nimmt. –
In diesem Fall versuchen wir, das Problem zu lösen. Wenn Sie also die Seite im Code öffnen, werden die Breiten bereits korrekt berechnet, aber sie werden nicht angewendet oder sind erst verfügbar, wenn Sie die Größenänderung vorgenommen haben. –