Как объект AbstractControl переходит в другой класс? - PullRequest
1 голос
/ 10 апреля 2020

У меня есть класс:

    import { MathValidators } from '../math-validators';

    export class EquationComponent implements OnInit {

     mathForm = new FormGroup(
        {
          a: new FormControl(EquationComponent.randomNumber()),
          b: new FormControl(EquationComponent.randomNumber()),
          answer: new FormControl(''),
        },
        [
          MathValidators.addition('answer', 'a', 'b'),
        ]
      );

    }

, а также есть еще один класс:

   import { AbstractControl } from '@angular/forms';

    export class MathValidators {

    static addition(target: string, sourceOne: string, sourceTwo: string) {
     return (form: AbstractControl) => {
    console.log(form);
    return {addition: null}
        }
    }

}

Мой вопрос заключается в том, что в первом классе, когда

MathValidators. класс.

Что такое логика c здесь?

1 Ответ

2 голосов
/ 10 апреля 2020

MathValidators.addition в этом случае ValidatorFn Я думаю, что происходит за сценой, это

 MathValidators.addition.call(this.mathForm, ['answer', 'a', 'b'])();

Отличная статья о js контекст выполнения

ОБНОВЛЕНИЕ: На самом деле, происходит следующее: ваша функция MathValidators.addition возвращает другую функцию

return (form: AbstractControl)

, которая принимает AbstractControl в качестве параметра. Затем эта функция вызывается с этим / FormGroup в качестве параметра

...