วัสดุเชิงมุม mat-slide-toggle ภายใน mat-form-field

หากฉันมี mat-slide-toggle ภายใน mat-form-field ฉันได้รับข้อผิดพลาด:

ข้อผิดพลาด: mat-form-field ต้องมี MatFormFieldControl

ฉันต้องการให้ mat-slide-toggle ของฉันอยู่ใน mat-form-field ของฉันเพื่อที่ฉันจะได้จัดแต่งทรงผมได้ มีความคิดเห็นใดบ้างว่าทำไมฉันถึงได้รับข้อผิดพลาดนี้ mat-slide-toggle ไม่ใช่ mat-form-field หรือไม่?

นี่คือตัวอย่างสิ่งที่ฉันมีอยู่ในปัจจุบัน:

<mat-form-field fxFlexFill *ngSwitchCase="'mat-slide-toggle'">
    <mat-slide-toggle>{{el.text}}</mat-slide-toggle>
</mat-form-field>

person Kevin192291    schedule 06.05.2019    source แหล่งที่มา
comment
อุ๊ย ดูเหมือนว่า mat-slide-toggle อาจไม่อยู่ใน mat-form-field ... นั่นไม่ดีเลย   -  person Kevin192291    schedule 06.05.2019
comment
stackblitz นั้นจะแสดงแถบเลื่อนด้านนอกส่วน mat-form-field   -  person Kevin192291    schedule 06.05.2019
comment
@SouravDutta ไม่มีตัวอย่างของคุณตอบคำถามของ op โปรดอ่านให้ละเอียดยิ่งขึ้น   -  person Saturn K    schedule 30.12.2020


คำตอบ (5)


ฉันนำเสนอเคล็ดลับสองข้อที่แตกต่างกันเล็กน้อยโดย ไม่มีการขีดเส้นใต้ โดยอิงตามคำตอบหลายข้อ

ป้ายกำกับด้านบนพร้อมพื้นที่สีขาวแบบขยายที่สามารถคลิกได้ ใช้ CSS

ป้อนคำอธิบายรูปภาพที่นี่

<mat-form-field floatLabel="always" appearance="none">
  <mat-label>Override Speed</mat-label>
  <mat-slide-toggle [(ngModel)]="Override"><span class="text-invisible">Override Speed</span></mat-slide-toggle>
  <textarea matInput hidden></textarea>
</mat-form-field>
.text-invisible {
  opacity: 0;
}

ป้ายกำกับทางด้านขวา ไม่มี CSS

ป้อนคำอธิบายรูปภาพที่นี่

<mat-form-field floatLabel="always" appearance="none">
  <mat-slide-toggle [(ngModel)]="Override">Override Speed</mat-slide-toggle>
  <textarea matInput hidden></textarea>
</mat-form-field>
person pcnate    schedule 11.12.2019
comment
นั่นคือสิ่งที่ฉันกำลังมองหา ขอบคุณ! - person LorisBachert; 10.08.2020

อย่างไรก็ตาม คุณสามารถใส่ฟิลด์ข้อความที่ซ่อนอยู่ในฟิลด์ mat-form-field เพื่อให้เป็นไปตามข้อกำหนด และหากจำเป็น คุณสามารถรวมค่าทั้งหมดเข้าด้วยกันได้ หากต้องการให้มีลักษณะเหมือนกับฟิลด์อื่นๆ หากจำเป็น

<mat-form-field floatLabel="always">
        <mat-label>Label</mat-label>
        <mat-slide-toggle>Raw</mat-slide-toggle>
        <textarea matInput hidden></textarea>
    </mat-form-field>
person Ronnie    schedule 11.09.2019
comment
คุณจะกำจัดขีดเส้นใต้เมื่อทำเช่นนี้ได้อย่างไร? - person Robert; 12.11.2019
comment
@Robert เพิ่ม appearance="none" ไปที่ <mat-form-field> - person pcnate; 11.12.2019
comment
@โรเบิร์ต ฉันใช้ .mat-form-field-underline { display: none; } - person Wungsow; 04.03.2020

ลองเพิ่มช่องป้อนข้อมูลที่ซ่อนอยู่

<mat-form-field>
  <mat-slide-toggle class="example-margin" [color]="color" [checked]="checked"
    [disabled]="disabled">
    Cumulative
  </mat-slide-toggle>
  <input matInput #value hidden />
</mat-form-field>
person Nathan    schedule 30.10.2019
comment
คุณจะกำจัดขีดเส้นใต้เมื่อทำเช่นนี้ได้อย่างไร? - person Robert; 12.11.2019
comment
@Robert ผ่าน css หรือโดยการตั้งค่าอินพุต [appearance] ของฟิลด์แบบฟอร์มให้เป็นค่าที่ไม่ถูกต้อง เช่น <mat-form-field class="w100p" [appearance]="'nope'"> ด้วยวิธีนี้ จะไม่ใช้สไตล์ CSS ของการขีดเส้นใต้ (ดังที่แสดงใน แหล่งที่มา) - person Luxor001; 14.11.2019

ตามเอกสารอย่างเป็นทางการ คุณไม่สามารถทำเช่นนี้ได้ (ลิงก์)

ส่วนประกอบวัสดุเชิงมุมต่อไปนี้ได้รับการออกแบบมาให้ทำงานภายใน <mat-form-field>:

  • <input matNativeControl> & <textarea matNativeControl>
  • <select matNativeControl>
  • <mat-select>
  • <mat-chip-list>
person Francesco    schedule 28.08.2019
comment
ตรวจสอบลิงค์นี้ภายใต้ใช้กับ @ เชิงมุม/แบบฟอร์ม: material.angular.io/components/ เลื่อนสลับ/ภาพรวม - person Bilal Djaghout; 11.12.2019
comment
@BilalDjaghout <mat-form-field> ทำงานร่วมกับช่องข้อความ <mat-slide-toggle> ไม่ใช่ช่องข้อความ - person Francesco; 05.02.2020

น่าเสียดายที่ Mat-Form-Fields ไม่ทำงาน/ทำงานเมื่อมีการสลับ mat-slide อยู่ภายใน ฉันต้องค้นหาสิ่งนี้ด้วยวิธีที่ยากลำบากด้วยตัวเอง

ลองสิ่งนี้แทน:

<div fxFlexFill *ngSwitchCase="'mat-slide-toggle'">
    <mat-slide-toggle>{{el.text}}</mat-slide-toggle>
</div>
person aidan22    schedule 12.06.2019
comment
สิ่งนี้ไม่เป็นความจริงจากระยะไกล คุณสามารถเพิ่มช่องป้อนข้อมูลที่ซ่อนอยู่ได้ <input matInput #value hidden /> - person Nathan; 30.10.2019