Что происходит, когда угловая привязка хоста используется вместе с назначением директив?

#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