Я использую материал ng-2 с angular 2 rc1. Я хочу запретить пользователю добавлять пробелы в поле <md-input></md-input>
. Я пробовал разные методы, чтобы решить эту проблему. Наконец, я добавил директиву для этого. Вот мой код директивы
import {Directive} from '@angular/core';
@Directive({
selector: 'input[trimmed]',
host: {
'(input)': 'onChange($event)',
'[value]' : 'value',
'[style.width]' : 'width'
}
})
export class TrimmedInput{
value: string;
constructor(){
this.value='Default Title';
}
onChange($event){
this.value = $event.target.value.trim();
console.log(this.value);
}
}
После этого я добавил эту директиву в компонент, который хочу использовать. Вот код компонента
import { TrimmedInput } from "../../../directives/triminput";
@Component({
selector: 'my-component',
template: require('./test.html'),
styles: [require('./test.css')],
directives: [MATERIAL_DIRECTIVES, SELECT_DIRECTIVES, BUTTON_DIRECTIVES, MD_INPUT_DIRECTIVES, FORM_DIRECTIVES, TYPEAHEAD_DIRECTIVES, MdRadioButton, MdRadioGroup, TrimmedInput],
providers: [CoursesService]
})
А вот код шаблона для использования этой директивы
<md-input trimmed placeholder="Course Title" maxLength="100" [(ngModel)]="model.title" ngControl="name" required #name="ngForm" >
</md-input>
Он отлично работает с полем HTML <input>
, но не работает с полем <md-input></md-input>
материала ng-2.
На стороне Express я использую Express Validator для проверки полей ввода, подобных этому.
req.checkBody('name', '* Please provide Course Title').notEmpty();
Если есть способ сделать это на стороне экспресса, это тоже хорошо для меня.