2017-01-18 28 views
8

İçerisinde giriş değerinin ne zaman değiştiğini algıla Bir girdide değeri değerinin bir yönerge değiştiğini algılamaya çalışıyorum.Yönerge

import { ElementRef, Directive, Renderer} from '@angular/core'; 

@Directive({ 
    selector: '[number]', 
    host: {"(input)": 'onInputChange($event)'} 
}) 

export class Number { 

    constructor(private element: ElementRef, private renderer: Renderer){ 

    } 
    onInputChange(event){ 
     console.log('test'); 
    } 
} 

bu yönergede sorun olduğunda değeri değiştiğinde programlama orada bir giriş olup sadece algıladığı şudur: yönerge şu var. Reaktif form kullanıyorum ve bazen değeri patchValue() işleviyle ayarlıyorum. Değişiklik fonksiyonu tetiklendiğinde nasıl yapabilirim?

cevap

18

input giriş özelliğini oluşturmanız ve ardından giriş özelliğinin ne zaman değiştiğini anlamak için ngOnChanges kancasını kullanmanız gerekir.

@Directive({ 
    selector: '[number]' 
}) 
export class NumberDirective implements OnChanges { 
    @Input() public number: any; 
    @Input() public input: any; 

    ngOnChanges(changes: SimpleChanges){ 
     if(changes.input){ 
     console.log('input changed'); 
     } 
    } 
} 

Plunkr

+1

ngOnChanges (değişiklikler: SimpleChanges) –

+0

Bu bir giriş yönergesi gerektirir, herhangi bir bağımlılık olmadan ev sahibi dinleyici kullanmalıdır – evanjmg

3

Ayrıca HostListener kullanabilirsiniz. HostListener hakkında daha fazla bilgi için this link'a gidebilirsiniz. İşte kod.

import {Directive, ElementRef, HostListener} from '@angular/core'; 


@Directive({ 
     selector: '[number]' 
}) 

export class NumberDirective { 

    @Input() public number: any; 
    @Input() public input: any; 

    constructor(private el: ElementRef) {} 

    @HostListener('change') ngOnChanges() { 
     console.log('test'); 
    } 

} 
İlgili konular