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

я есть несколько пользовательских директив, которые в основном предназначены для<input>, И у меня есть пользовательский компонент<app-decorated-input>

Есть тонна<app-decorated-input>с простой<input>s в моем приложении, для некоторых из которых я люблю использовать директивы, а для других - нет. Как мне передать директивы основному<input> когда директива используется так:

<app-decorated-input directive1 directive2 ></app-decorated-input>

и имеют такое же влияние директив на основную<input> как если бы он был использован непосредственно на нем:

 <input type="text" directive1 directive2 >
ОБНОВИТЬ:

Что лежит внутри<app-decorated-input> не имеет большого значения, за исключением того факта, что он содержит<input> как я уже упоминал. Его шаблон выглядит примерно так:

<div> Some decorations here </div>
<div> 
  <input type="text" {...directives}> <!-- In ReactJS this is done by using {...this.props} -->
</div>
<div> Some decorations here too! </div>

Все, что я хочу сделать, это передать все директивы, указанные на<app-decorated-input> к основному<input>.

 dcp345028 сент. 2018 г., 16:54
Вы когда-нибудь понимали это?
 Chris11 мая 2018 г., 17:48
Вы нашли решение для этого?
 Tabrez Ahmed01 окт. 2018 г., 11:13
@ dcp3450, пока нет

Ответы на вопрос(2)

как это делается сControlValueAccessor или валидаторы

export const MY_DIRECTIVES = new InjectionToken<any>('MyDirectives');
export const MY_DIRECTIVE1: Provider = {
  provide: MY_DIRECTIVES,
  useExisting: forwardRef(() => MyDirective1),
  multi: true
};

@Directive({
  selector: '....',
  providers: [MY_DIRECTIVE1]
})
class MyDirective1 {}

а затем в вашем компоненте ввода

constructor(@Optional() @Self() @Inject(MY_DIRECTIVES) private myDirectives: any[]) {
  console.log(myDirectives);
}
 Chris11 мая 2018 г., 18:33
Можете ли вы уточнить это немного подробнее? Если я добавлю это в свой конструктор пользовательских компонентов, я получу проблему циклической зависимости. Или вы говорите о родном элементе ввода? Тогда как перейти на конструктор?
 Chris11 мая 2018 г., 18:38
Ну, вопрос в основном тот же, только с ионным входом (от ionic2) вместо ввода. Я не думаю, что это так много об ошибке, я просто не уверен, где ее исправить.
 Günter Zöchbauer11 мая 2018 г., 18:35
Я бы посоветовал вам создать новый вопрос с вашим кодом, который вызывает ошибку.

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

constructor(
    @Attribute('attributeName') private attributeUno:String, 
    private element:ElementRef
) {
    console.log(this.attributeUno);
}

Ваш ответ на вопрос