2016-06-14 5 views
1

Когда я меняю селектор на 'input', он работает на каждом входе, который он может найти. Если я изменю его на 'input[numeric]', ничего не произойдет (да input[numeric] действительно есть). Что я делаю неправильно? Разве это не должно работать так? Он говорит, что селектор CSS в документации ...Селектор директивы не находит элемент

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

@Directive({ 
    selector: 'input[numeric]', 
    host: { 
     '(input)' : 'onInputChange()' 
    } 
}) 
export class NumberFormatDirective { 

    constructor(public model: NgModel, public element: ElementRef) { 
     console.log(1); 
    } 

    onInputChange(): any { 
     console.log(2); 
    } 
} 

Шаблон выглядит следующим образом:

<input *ngIf='!isMultiLine()' 
     [attr.readonly]='readonly' 
     [attr.disabled]='isInputDisabled()' 
     [attr.minlength]='minLength' 
     [attr.maxlength]='maxLength' 
     [attr.numeric]='isNumeric()' 
     [(ngModel)]='value' (ngModelChange)='valueChanged($event)' 
     (keyup.enter)='updateValueRestore()' 
     (keyup.escape)='resetValue()' 
     (focus)='onFocus()' 
     (blur)='onBlur()' 
     autocomplete='off'/> 
+0

Как выглядит 'input [numeric]' that 'is really there "точно? –

+0

Я добавил код html – user489872

+1

Я думаю, он должен работать. Можете ли вы воспроизвести в Plunker? –

ответ

0

Проверить

plnkr.co/edit/VFRqjipiFFJqYdnSIM49?p=preview

Его работа как ожидалось.

+0

Я вижу, но он не будет работать на моей локальной машине :( – user489872

+1

Ответ должен содержать основную часть напрямую, а не просто ссылку на внешний ресурс. Ссылки могут стать устаревшими. –