2016-09-09 4 views
2

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

Я сделал свой компонент точно как here.

Верхняя часть компоненты:

@Component({ 
    selector: 'sc-input', 
    styles, 
    template: ` 
    <label class="label"> 
     <ng-content></ng-content> 
     <input class="input" [(ngModel)]='value' [attr.name]='name' [attr.type]='type' 
      (blur)='onBlur($event)' (focus)='onFocus($event)'> 
     <div class="errors"> 
     <div class="errors__messages"><ng-content select="sc-error-messages"></ng-content></div> 
     <div class="errors__indicator"></div> 
     </div> 
    </label> 
    `, 
    providers: [CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR] 
}) 
export class CustomInputComponent implements ControlValueAccessor { 
    ... 
} 

решаемой проблемы: по хосту классов, но все же хотят знать, если есть способ получить контроль внутри его компоненты ..

+0

Пожалуйста, добавьте код, который показывает, что вы создали. –

+0

@ Günter Zöchbauer Добавил код. Я не могу понять, как получить объект ошибки. 'this' не содержит этого, я думаю, мне нужна инъекция. –

ответ

2

Я думаю, что это должно по-прежнему работать в новом модуле формы:

export class CustomInputComponent implements ControlValueAccessor { 
    constructor(private control:NgControl, private ngModel:NgModel) {} 
} 

Update

Просто найти https://github.com/angular/angular/issues/7391#issuecomment-246120184

Он предлагает

constructor(private _injector:Injector) { 
    this.control = this._injector.get(NgControl).control; 
} 
+1

Доступ к элементу управления в конструкторе, как это, не работает для меня, поскольку он всегда был нулевым. Получение 'NgControl' в' writeValue' (как указывает проблема github) или в 'ngAfterViewInit()' действительно работало. – enyo

+1

Интересно, но ИМХО странно. –

+0

Я использовал его с дротиком, хотя и не машинописным, поэтому, возможно, есть различия в этом отношении. – enyo

Смежные вопросы