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

typescript - วิธีปิดการใช้งานทุกฟิลด์ในฟอร์มที่ขับเคลื่อนด้วยเทมเพลตใน Angular


ฉันสร้างฟอร์มที่ขับเคลื่อนด้วยเทมเพลตใน Angular 5

ฉันต้องการปิดการใช้งานฟอร์มทั้งหมดในตอนแรก และก็ต้องการให้ฟอร์มสามารถใช้งานได้เมื่อปุ่มบางปุ่มถูกคลิก ดังนั้นฉันจึงเพิ่มคุณสมบัติ disabled ในแท็กฟอร์มและตั้งค่าของมันเป็น false ดังที่แสดงด้านล่าง (ซึ่งวิธีนี้ไม่ได้ผลแม้กระนั้น):

<form #formName = "ngForm" [disabled]="true">
</form>

เนื่องจากคุณสมบัติ disabled ข้างต้นไม่ทำงาน ฉันจึงเปลี่ยนคุณสมบัติ disabled เป็น

[attr.disabled] = true

นี่ก็ไม่ได้ผลเช่นกัน

ตอนนี้เมื่อฉันมีการอ้างอิงถึงองค์ประกอบฟอร์มซึ่งคือ #formName ฉันได้ใช้มันในไฟล์ TS และพยายามเปลี่ยนค่าคุณสมบัติ disabled ภายในวัตถุอ้างอิงนั้น

นี่คือสิ่งที่ฉันได้ทำ

@ViewChild('formName') formName;


this.formName.disabled = true; 

ซึ่งก็ใช้ไม่ได้เช่นกัน และฉันได้รับข้อความแสดงข้อผิดพลาดที่บอกว่าไม่สามารถเปลี่ยนแปลง disabled ได้เพราะมันเป็นเพียง getter

ฉันควรปิดการใช้งานฟอร์มทั้งหมดโดยค่าเริ่มต้นใน Angular สำหรับฟอร์มที่ขับเคลื่อนด้วยเทมเพลตอย่างไร?

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

คำตอบ #1

ดังที่ได้กล่าวไว้ในความคิดเห็น คุณสามารถห่อฟอร์มไว้ภายในแท็ก fieldset และทำได้ดังนี้:

<form>
    <fieldset [disabled]="fieldsetDisabled">
        <!-- YOUR FIELDS HERE -->
    </fieldset>
</form>

และคุณสามารถจัดการสถานะในคอนโทรลเลอร์ของคุณโดยการสลับตัวแปรท้องถิ่นและระหว่างสถานะ disabled/enabled ดังนี้:

this.fieldsetDisabled = true;  // Disables the fieldset
this.fieldsetDisabled = false; // Enables the fieldset

บทความที่เกี่ยวข้อง