Açısal bakış açısından, girdi türü tarih öğesine bir yer tutucu koymayı başardım.
Öncelikle aşağıdaki css'i tanımladım:
.placeholder {
color: $text-grey;
}
input[type='date']::before {
content: attr(placeholder);
}
input::-webkit-input-placeholder {
color: $text-grey;
}
Bunun gerekli olmasının nedeni, eğer css3 içeriği normal yer tutucudan farklı bir renge sahipse, bu yüzden ortak bir tane kullanmak zorunda kaldım.
<input #birthDate
class="birthDate placeholder"
type="date"
formControlName="birthDate"
placeholder="{{getBirthDatePlaceholder() | translate}}"
[class.error]="!onboardingForm.controls.birthDate.valid && onboardingForm.controls.birthDate.dirty"
autocomplete="off"
>
Daha sonra şablonda, bileşenden bu girdiye erişebilmek için bir viewchild birthDate özniteliği kullanıldı. Ve yer tutucu özelliği üzerinde, yer tutucuyu gösterip göstermeyeceğimize karar verecek açısal bir ifade tanımlayın. Bu, çözümün en büyük dezavantajı, yer tutucunun görünürlüğünü yönetmeniz gerektiğidir.
@ViewChild('birthDate') birthDate;
getBirthDatePlaceholder() {
if (!this.birthDate) {
return;
} else {
return this.birthDate.nativeElement.value === '' ?
'ONBOARDING_FORM_COMPONENT.HINT_BIRTH_DATE' :
'';
}
}