Наборы общих атрибутов для угловых элементов - PullRequest
0 голосов
/ 27 апреля 2018

В нашем проекте есть несколько элементов управления с похожими свойствами. Есть ли способ иметь общее расширение, которое добавляет такие общие атрибуты, чтобы его можно было изменить по всему проекту в одном месте?

Например, объявление typeahead выглядит так:

 <input type="text" name="certificate.title" class="form-control" [class.is-invalid]="invalid('certificate.title')" autocomplete="off" required
                   [(ngModel)]="editModel.certificate.title"
                   [typeahead]="getTypeahead(dt.Certification, editModel.certificate.title, true)"
                   (typeaheadOnSelect)="select($event, editModel.certificate)"
                   [typeaheadOptionsLimit]="10"
                   [typeaheadMinLength]="2"
                   typeaheadWaitMs="400"
                   typeaheadOptionField="title" 
                   typeaheadPhraseDelimiters=" "/>

и атрибуты class, autocomplete, typeaheadOptionsLimit, typeaheadMinLength, typeaheadWaitMs и typeaheadPhraseDelimiters являются общими.

Было бы здорово иметь какой-нибудь общий декларативный способ добавления всех общих свойств к каждому элементу управления, например

 <input type="text" name="certificate.title" [class.is-invalid]="invalid('certificate.title')" required
                   [(ngModel)]="editModel.certificate.title"
                   [typeahead]="getTypeahead(dt.Certification, editModel.certificate.title, true)"
                   (typeaheadOnSelect)="select($event, editModel.certificate)"
                   typeaheadOptionField="title" 
                   **attributeSet="GenericTypeahead"** />

В качестве бонуса было бы здорово иметь возможность переопределять атрибуты.

1 Ответ

0 голосов
/ 27 апреля 2018

У вас есть несколько вариантов:

Вы можете поместить глобальные опции в файлы среды (dev и prod и любую другую среду, которую вы определили). После компиляции они изменяются на обычные js-функции / объекты, поэтому вы можете изменять их значения и во время выполнения.

Или вы можете определить глобальную службу (используемую в поставщиках app.module), сохраняющую эти переменные и внедряющуюся в ваше приложение для доступа к его получателям.

Или вы можете использовать Redux (например, с платформой NGRX) и иметь хранилище core / app-redux для переменных, общих для всего приложения.

Для свойств, изменяющихся во время выполнения, я рекомендую 3), для свойств, установленных во время компиляции, я рекомендую 1). Обратите внимание, что для больших приложений магазин редуксов в любом случае считается хорошей практикой, и, судя по всему, ваше приложение велико.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...