Я пытаюсь ввести пользовательскую форму в Angular 4. Это простой пример, но я не могу заставить компонент привязаться к ngModel. Я могу передать этому компоненту значение по умолчанию из родительского контроллера, но когда я изменяю значение на этом входе, пользовательский интерфейс регистрирует изменение, но модель в контроллере не показывает новое значение.
Вот мой нестандартный компонент:
import { Component, Input, forwardRef, Output, EventEmitter, ElementRef, Renderer } from '@angular/core';
import { ControlValueAccessor, NG_VALUE_ACCESSOR, NG_VALIDATORS, FormControl } from '@angular/forms';
@Component({
selector: 'input-test2',
template:
`
<input type="text" class="form-control" placeholder="Symbol" [(ngModel)]="value" [maxlength]="5" >
`,
providers: [
{
provide: NG_VALUE_ACCESSOR,
useExisting: forwardRef(() => InputTestComponent),
multi: true
},
]
})
export class InputTestComponent implements ControlValueAccessor {
@Input('value') value = false;
private propagateChange = (_: any) => { };
private propagateTouch = (_: any) => { };
writeValue(value: any): void {
if (value) {
this.value = value;
}
}
registerOnChange(fn: (_: any) => void): void {
this.propagateChange = fn;
}
registerOnTouched(fn: () => void): void {
this.propagateTouch = fn;
}
private onChange(event : any) {
this.propagateChange(this.value);
}
И мое использование компонента: .. внутри формы
<input-test2 id="coin" name="coin" [(ngModel)]="manualEntry.coin" #coin="ngModel" required (change)="x($event)" > </input-test2>
У кого-нибудь есть простой пример того, как сделать этот ввод пользовательской формы? Все примеры, которые я нашел, либо сложны, либо не имеют функциональности. Я просто хочу, чтобы для начала по умолчанию вводился type = "text", а затем я мог бы добавить к нему.