ค้นหาเว็บไซต์

css - Angular 6: อัปเดต NG Style ด้วยฟังก์ชัน


ฉันมาที่นี่วันนี้เพราะฉันสงสัยเกี่ยวกับ NG Style กับ Angular (เวอร์ชันของฉันคือ 6) ฉันจะสามารถ อัปเดต [ngStyle] ได้อย่างไรเมื่อ ฉันใช้ฟังก์ชัน เพื่อคืนค่าหนึ่ง

ตามปกติ นี่คือตัวอย่างที่ง่ายขึ้นของปัญหาของฉัน:

ฉันสร้าง div จากอาร์เรย์ของอ็อบเจ็กต์ สำหรับแต่ละส่วน จะมี div สองตัว: หนึ่งตัวทางซ้ายและหนึ่งตัวทางขวา

ขนาดของ div ทางด้านซ้ายจะเปลี่ยนตามเนื้อหา ดังนั้นมันสามารถเป็นได้ทั้ง 50px และ 125px

ฉันต้องการให้ div ด้านขวาพอดีกับขนาดของ div ด้านซ้าย โดยจะมีขนาดครึ่งหนึ่งตลอดเวลา (2 ใน getLeftDivHeight) ซึ่งแน่นอนว่าจะต้องทำในแต่ละ section (Container)

ฉันจะทำให้ ngStyle อัปเดตเมื่อความสูงของ div ด้านซ้ายเปลี่ยนแปลงได้อย่างไร (เนื่องจากการปรับขนาด, การเพิ่มเนื้อหา, หรือเวลาการแสดงผลหน้า)?

นี่คือโค้ด:

เอชทีเอ็มแอล

<section class = "Container" *ngFor="let oneContent of allContent">

<div id = "{{oneContent.id}}" style="float: left">
<p> {{oneContent.Content}} </ p>
</div>

<div style="float: right" [ngStyle]="height: getLeftDivHeight(oneContent.id, 2)">
</div>

</div>

ไทพ์สคริปต์ (เฉพาะฟังก์ชันที่เกี่ยวข้อง)

getLeftDivHeight(id: string, divisionNumber: number): string {
height = document.GetElementById(id).getBoundingClientRect().height / 
divisionNumber;
return height + 'px';
}

โปรดทราบว่าฉันไม่ได้มองหาวิธีแก้ปัญหาแบบ HTML แต่เป็นแบบ Angular โค้ดด้านบนเป็นเพียงตัวอย่างเพื่ออธิบายปัญหาของฉัน

ขอบคุณล่วงหน้า

คำตอบ #1

คุณสามารถส่งคืนสตริงสไตล์ทั้งหมด เช่น height: 100px จากเมธอด getLeftDivHeight

getLeftDivHeight(id: string, divisionNumber: number): string { height=document.GetElementById(id).getBoundingClientRect().height/divisionNumber; return `height: $ {height}px`; }

หรือคุณสามารถใช้ไวยากรณ์ด้านล่างในเทมเพลต [style.height.px]="getLeftDivHeight(parameters)" โดยให้เมธอดส่งค่าความสูงเป็นตัวเลขเท่านั้น

คำตอบ #2

ดังนั้น ในที่สุดฉันก็สามารถทำมันได้ โดยใช้คำสั่งหนึ่ง

ฉันใช้ ElementRef เพื่อเข้าถึงวัตถุ HTML ของ div ด้านขวาของฉัน

import {ElementRef,Renderer} from '@angular/core';
constructor(private el: ElementRef,public renderer: Renderer) {}

จากนั้น ฉันใช้ Dom เพื่อเข้าถึงความสูงของ div ซ้าย

this.el.nativeElement.parentElement.childElement[0].clientHeight;

แล้วฉันใช้ this.renderer.setElementStyle() เพื่อใช้สไตล์

ฉันยังได้เรียนรู้ด้วยว่าการใช้ offscrollheight มาคำนวณไม่ใช่ความคิดที่ดี!