html 自定义formControl输入组件。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了html 自定义formControl输入组件。相关的知识,希望对你有一定的参考价值。

import { Component, OnInit, forwardRef, Input, ElementRef } from '@angular/core';
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
declare var jQuery: any;
import '../../../assets/semantic/semantic.min.js';

@Component({
  selector: 'app-vehicle-select',
  templateUrl: './vehicle-select.component.html',
  styleUrls: ['./vehicle-select.component.css'],
  providers: [
    {
      provide: NG_VALUE_ACCESSOR,
      useExisting: forwardRef(() => VehicleSelectComponent),
      multi: true
    }
  ]
})
export class VehicleSelectComponent implements ControlValueAccessor {
  @Input() value;
  propagateChange = (_: any) => { };

  constructor(private elRef: ElementRef) { }

  ngOnInit() {
    console.log('filter init');
    jQuery(this.elRef.nativeElement).find('#vehicle-filter').dropdown({ placeholder: 'value' });
  }

  writeValue(value: any): void {
    if (value !== undefined) {
      // If a value is provided to the Component
      if (this.value && String(this.value).length) { // Is Not an Empty String
        this.value = value;
      }

    }
  }
  registerOnChange(fn: any): void {
    this.propagateChange = fn;
  }
  registerOnTouched(fn: any): void {
  }
  setDisabledState?(isDisabled: boolean): void {
  }
  onChange(value) {
    this.propagateChange(value);
  }
}
<select class="ui dropdown" id="vehicle-filter" [(ngModel)]="value" (change)="onChange($event.target.value)">
  <option value="" selected>Tous</option>
  <option value="Frigorifique">Frigorifique</option>
  <option value="Taut Liner">Taut Liner</option>
</select>

以上是关于html 自定义formControl输入组件。的主要内容,如果未能解决你的问题,请参考以下文章

在自定义 Angular 组件中访问 FormControl

输入输入时 FormControl 不更新

如何从 Angular2 FormControl 对象中获取输入字段的名称?

Material-UI TextField 上下文脏

角 10 |动态组件中的FormControl

在新的 Angular 2 表单中将 NgModel 绑定到 FormControl