首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 ><input>标记的扩展功能

<input>标记的扩展功能
EN

Stack Overflow用户
提问于 2018-11-13 19:46:17
回答 3查看 75关注 0票数 0

我想创建一个包含<input>标记的组件,并为其添加额外的功能,例如一个明文值"X“图标,或任何其他自定义操作和标记,同时保留原生输入元素的相同事件绑定((click)(keyup)等)。示例:

代码语言:javascript
复制
<my-input (keyup)="handleKeystroke($event)" (click)="handleClick($event)" [customProp]="...">

有没有可能在不显式地为所有可能的事件绑定在子输入元素上创建自定义输出和事件处理程序的情况下这样做呢?

欢迎提出任何建议。谢谢!

EN

回答 3

Stack Overflow用户

发布于 2018-11-13 20:04:43

是的,使用ControlValueAccessor接口是可能的

以下是在组件类中实现时需要添加的示例代码

代码语言:javascript
复制
const TYPE_CONTROL_ACCESSOR = {
  provide: NG_VALUE_ACCESSOR,
  useExisting: forwardRef(() => YourComponent ),
  multi: true
};

@Component({
  selector: 'custom-control',
  templateUrl: './custom-control.component.html',
  styleUrls: ['./custom-control.component.scss'],
  changeDetection: ChangeDetectionStrategy.OnPush,
  providers: [TYPE_CONTROL_ACCESSOR]
})

 export class YourComponent implements ControlValueAccessor {

 private onTouch: Function;
 private onModelChange: Function;

 writeValue(obj: string): void {
      this.value = obj;
 }
 registerOnChange(fn: any): void {
      this.onModelChange = fn;
 }
 registerOnTouched(fn: any): void {
 this.onTouch = fn;
 }

您可以从模板绑定事件并在component.ts中捕获它们

票数 3
EN

Stack Overflow用户

发布于 2018-11-13 19:59:58

这可以使用ControlValueAccessor来完成。请看一下文档https://angular.io/api/forms/ControlValueAccessor。试着用谷歌搜索一下例子。

票数 1
EN

Stack Overflow用户

发布于 2018-11-13 20:03:16

这里有一个非常好的自定义事件示例:Angular event emitter

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53280367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档