จากมุมมองเชิงมุมฉันจัดการเพื่อใส่ตัวยึดตำแหน่งในองค์ประกอบวันที่ประเภทอินพุต
ก่อนอื่นฉันกำหนด css ต่อไปนี้:
.placeholder {
color: $text-grey;
}
input[type='date']::before {
content: attr(placeholder);
}
input::-webkit-input-placeholder {
color: $text-grey;
}
สาเหตุที่จำเป็นคือถ้าเนื้อหา css3 มีสีแตกต่างจากตัวยึดตำแหน่งปกติดังนั้นฉันจึงต้องใช้สีทั่วไป
<input #birthDate
class="birthDate placeholder"
type="date"
formControlName="birthDate"
placeholder="{{getBirthDatePlaceholder() | translate}}"
[class.error]="!onboardingForm.controls.birthDate.valid && onboardingForm.controls.birthDate.dirty"
autocomplete="off"
>
จากนั้นในเทมเพลตใช้แอตทริบิวต์ viewchild birthDate เพื่อให้สามารถเข้าถึงอินพุตนี้จากคอมโพเนนต์ และกำหนดนิพจน์เชิงมุมบนแอตทริบิวต์ตัวยึดตำแหน่งซึ่งจะตัดสินว่าเราแสดงตัวยึดตำแหน่งหรือไม่ นี่คือข้อเสียเปรียบที่สำคัญของการแก้ปัญหาคือคุณต้องจัดการการมองเห็นของตัวยึดตำแหน่ง
@ViewChild('birthDate') birthDate;
getBirthDatePlaceholder() {
if (!this.birthDate) {
return;
} else {
return this.birthDate.nativeElement.value === '' ?
'ONBOARDING_FORM_COMPONENT.HINT_BIRTH_DATE' :
'';
}
}