여기에 예 또는 아니요 태그를 선택하여 각도 코드를 작성했습니다. 비활성화를 활성화하려면 날짜 선택기가있는 텍스트 상자를 변경해야합니다. 그러나 작동하지 않습니다.
여기 내 코드 ..,
<div class="row">
<div class="col-md-3">
<div class="form-group">
<label>Signed AOB</label>
<select name="signed" class="form-control required" [(ngModel)]="signed" (change)="checkSigned(signed)">
<option value="N">No</option>
<option value="Y">Yes</option>
</select>
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label>Date</label>
<input type="text" name="Date" class="form-control" [(ngModel)]="Date" placeholder="MM-DD-YYYY" datepicker disabled="isEnabled">
</div>
</div>
</div>
및 해당 구성 요소 ..,
import { Component, Input, OnInit, Output, EventEmitter} from '@angular/core';
@Component({
selector: 'tab',
templateUrl: './app/components/tab/tab.component.html'
})
export class TabComponent implements OnInit{
constructor(){}
@Input() tab: Object;
checkSigned(value){
if(value === 'Y'){
this.isEnabled=true;
}else{
this.isEnabled=false;
}
}
ngOnInit(){
}
}
datepicker 지시어 .. ,,
import { Directive, ElementRef, Input, forwardRef } from '@angular/core';
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from "@angular/forms";
declare var $: any;
export const CUSTOM_INPUT_DATE_PICKER_CONTROL_VALUE_ACCESSOR: any = {
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => DatePicker),
multi: true
};
@Directive({
selector: '[datepicker]',
host: { '(blur)': 'onTouched($event)' },
providers: [CUSTOM_INPUT_DATE_PICKER_CONTROL_VALUE_ACCESSOR]
})
export class DatePicker implements ControlValueAccessor {
private innerValue: string;
@Input('changeMonth') changeMonth: boolean = true;
@Input('changeYear') changeYear: boolean = true;
constructor(private el: ElementRef) {
}
ngOnInit() {
$(this.el.nativeElement).datepicker({
changeMonth: true,
changeYear: true,
dateFormat: 'mm-dd-yy'
}).on('change', (e: any) => {
this.onChange(e.target.value);
});
}
public onChange: any = (_:any) => { }
public onTouched: any = () => { }
get value(): any {
return this.innerValue;
};
set value(v: any) {
if (v !== this.innerValue) {
this.innerValue = v;
this.onChange(v);
}
}
writeValue(val: string): void {
this.innerValue = val;
$(this.el.nativeElement).datepicker("setDate", this.innerValue);
}
registerOnChange(fn: any): void {
this.onChange = fn;
}
registerOnTouched(fn: any): void {
this.onTouched = fn;
}
}
나는 이것을 지시문에 추가하여 prb를 해결했습니다.
setDisabledState(isDisabled: boolean): void {
this.renderer.setElementProperty(this.el.nativeElement, 'disabled', isDisabled);
}
도와 주셔서 감사합니다 :-)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다