Как передать объект, используемый для значений, в функцию, используемую в * NgIf? - PullRequest
0 голосов
/ 27 января 2019

Я хотел бы провести модульное тестирование всей базовой логики моего приложения Angular 5.Я понял, что мой * NgIf - основная логика.С этим я люблю извлекать их в вспомогательный класс ShowHide.При этом я не хочу в конечном итоге использовать функции (Переменная, Переменная, Переменная) для выполнения логики, например, проверка на нетронутость, правильность и т. Д.

Я пробовал использовать функцию ниже

public ValidOrPristine(checkControl:AbstractControlDirective):boolean{
    console.warn(checkControl);
    if(checkControl.pristine || checkControl.valid){
        return false;
    } else {
        return true;
    }
}

Затем в моем html я заменяю

<input type="text" #inputItem=[(ngModel)]>
<div [hidden]="inputItem.valid || inputItem.pristine">

на:

<input type="text" #inputItem=[(ngModel)]>
<div [hidden]="showHide.ValidOrPristine(inputItem)">

Мой элемент всегда показывает и, глядя на вывод консоли, функция получает неопределенное.

Хорошо, затем я попробовал:

<input type="text" #inputItem=[(ngModel)]>
<div [hidden]="showHide.ValidOrPristine(this)">

Теперь консоль показывает весь объект в нем.Не слишком полезно.

Я хотел убедиться, что это действительно возможно, как мне кажется, поэтому я пишу:

public Value1OrValue2(value1:boolean,value2:boolean):boolean{
    if(value1 || value2){
        return false;
    } else {
        return true;
    }
}

интегрируем это в:

<input type="text" #inputItem=[(ngModel)]>
<div [hidden]="showHide.Value1OrValue2(inputItem.valid,inputItem.pristine)">

Работает как чемпион и скрывает элемент.

Я надеялся, что смогу просто передать элемент управления для выполнения логики за сценой доступа к свойствам элемента управления.

Iдаже дошел до того, что посмотрел на NgIf в угловом репозитории Git.

Затем я признал, что мой уровень мастерства был не до того, чтобы отследить его на данный момент.

Iчестно говоря, не думал, что трудно передать то, что NgIf использует для своей логики.Определение правильного типа, я думал, был камнем преткновения.Все это направлено на то, чтобы использовать что-то вроде Жасмин, чтобы пройти всю итерацию логики этих элементов для более сложных элементов.

...