2016-11-24 13 views
1

をリセット:form.reset()が、私はこのディレクティブは、そのビューの値をクリアしていない、に適用されているフォームコントロールを発生した場合角度2入力指令は、フォーム上の表示値をクリアしていない私は、次のディレクティブ持っ

declare var $:any; 

export const CUSTOM_INPUT_DATE_PICKER_CONTROL_VALUE_ACCESSOR: any = { 
    provide: NG_VALUE_ACCESSOR, 
    useExisting: forwardRef(() => SharedAppDatePickerDirective), 
    multi: true 
}; 

@Directive({ 
    selector: '[date-picker]', 
    host: {'(blur)': 'onTouched($event)'}, 
    providers: [CUSTOM_INPUT_DATE_PICKER_CONTROL_VALUE_ACCESSOR] 
}) 
export class SharedAppDatePickerDirective implements  ControlValueAccessor, OnInit { 

    constructor(private el: ElementRef) { } 

    private innerValue: string; 

    public onChange: any = (_) => { /*Empty*/ } 
    public onTouched: any =() => { /*Empty*/ } 

    ngOnInit() { 

    $(this.el.nativeElement).datepicker().on('change', e => this.onChange(e.target.value)).on('change', e => e.target.focus()); 
    } 

    get value(): any { 
    return this.innerValue; 
    }; 

    //set accessor including call the onchange callback 
    set value(v: any) { 
    if (v !== this.innerValue) { 
     this.innerValue = v; 
     this.onChange(v); 
    } 
    } 

    writeValue(val: string) : void { 
    this.innerValue = val; 
    } 

    registerOnChange(fn: any): void { 
    this.onChange = fn; 
    } 

    registerOnTouched(fn: any): void { 
    this.onTouched = fn; 
    } 

    ngOnDestroy() { 
    $(this.el.nativeElement).datepicker('destroy'); 
    } 
} 

を。 form.reset()の後、それは手つかずの、元々の、無効になりますが、以前入力した値を保持します。

対処方法はありますか?実行していることを修正

答えて

0

writeValue(val: string) : void { 
    this.innerValue = val; 
    this.el.nativeElement.value = val; 
} 
関連する問題