Метод проверки пакета в классе (Angular) - PullRequest
0 голосов
/ 07 октября 2018

Эй, я пытаюсь сделать мой код приложения лучше и организованнее.Прямо сейчас у меня есть проверка внутри компонента формы.Как я могу создать новый класс и использовать этот метод проверки в моей группе форм?

Я опубликую свой код:

export class AddMovieComponent implements OnInit {


  movieForm: FormGroup;

  constructor(
    private fb: FormBuilder,
    private dataService: DataService,
  ) {


  }

  ngOnInit() {


    this.movieForm = this.fb.group({
      title: ['', [Validators.required, this.titleValidator.bind(this)]],
     ...
  }

  titleValidator(control: AbstractControl) { --> I want this method in a CustomValidators class
    if (control && (control.value !== null || control.value !== undefined)) {
      for (let i = 0; i < this.dataService.getTitles().length; i++) {
        if (control.value == this.dataService.getTitles()[i]) {
          return {
            isError: true
          };
        }
      }
      return null;

    }
  }

Я попытался создать новый класс и просто добавитьметод проверки, но это просто пошло не так, весь синтаксис вышел из строя.Я надеюсь, что кто-то может дать мне направление здесь.

Большое спасибо!

1 Ответ

0 голосов
/ 07 октября 2018

Просто создайте новый сервис и добавьте метод в сервис.Затем введите сервис, где вы хотите использовать метод следующим образом:

Компонент, который использует сервис:

constructor(private myService: MyService) {
  // you might need this next line in your case
  myService.titleValidator = myService.titleValidator.bind(this)
}

ngOnInit() {
  this.movieForm = this.fb.group({
    title: ['', [Validators.required, this.myService.titleValidator()]],
   ...
}

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

@Injectable({                  
  providedIn: 'root' // this line means you don't need to add it to a providers array and it will be loaded on demand and is accessible at the root level, it creates a single instance of the service that is accessible anywhere
})                             
export class MyService {                           
  constructor() { }           
  titleValidator(control: AbstractControl) {
    // blah blah
  }       
}                              
* 1008В качестве альтернативы вы можете просто создать класс и экспортировать его (экспортировать класс MyClass) в файл, в котором он объявлен, и импортировать его в компоненте, который его использует.Но услуга более распространена в мире Angular.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...