#javascript #angular #angular2-directives
Вопрос:
Я написал директиву в angular, которая отключает или включает кнопку после проверки объекта. Но у кнопки также есть некоторые другие простые требования к проверке, которые напрямую передаются в директиву «отключено» в качестве значения. Пример кода html:
lt;button (click)="onSave()" [disabled]="validation1() || !validation2()" [validProperty]="myObject.property"gt;Savelt;/buttongt;
Это моя директива:
import { Directive, Input, OnChanges, HostBinding } from '@angular/core'; import { SomeType } from '../../types/data.types'; @Directive({ selector: '[validProperty]' }) export class ValidateDirective implements OnChanges { @HostBinding('disabled') disabled: boolean; @Input('validProperty') property: SomeType[]; constructor() { } ngOnChanges() { this.disabled = !this.validateProperty(this.property); } private validateProperty(property: SomeType[]): boolean { return false; } }
В настоящее время моя кнопка учитывает только проверки, отправленные в [отключено], а не мою директиву, хотя управление достигает моей директивы(я использовал точки останова devtools для проверки). Как заставить его учитывать как проверки [отключено], так и привязку моей директивы к хосту? Что-то вроде оператора или. Заранее спасибо за помощь 🙂
Комментарии:
1.
[disabled]="validation1() || !validation2() || myObject.property"
?2. @Stavm, MyObject.property не является логическим значением. Это массив объектов, которые необходимо проверить. Я использую директиву для ее проверки.
3. затем создайте метод проверки для этого массива, суть в том, чтобы избежать создания условия гонки, которое работает только из-за деталей угловой реализации (которая запускается после чего), и переместите всю логику, чтобы отключить кнопку, в одно место
4. Я мог бы написать проверку в методе. Я просто хотел использовать директиву. Итак, неужели этого невозможно достичь? @Stavm