如何使angular2组件ng无效

布拉奇

我需要编写一个可以在表单中使用的组件。我想将其发布为ng-invalid。

那是我的表单模板/视图:

    <form  #myForm="ngForm">        
    <domain-base-value  [(ngModel)]="value.value" name="bla" #bla="ngModel">
    </domain-base-value>
    <div [hidden]="myForm.valid || myForm.pristine">
      Form is not valid
    </div>
    </form>

那是域基值组件视图: <input [(ngModel)]="value" required /> 如果我运行它,则输入将变为ng-invalid,但不是域基值和表单。我可以将其required移至表单,但是我希望子组件在有效时和无效时都具有逻辑。有什么建议么?

蒂埃里圣堂武士

您需要通过实现自定义值访问器来使其子组件ngModel兼容。这样,您将可以使用ngModel和指令,例如ngFormControl应用验证器。

这是一个示例:

const MY_VALUE_ACCESSOR = new Provider(
  NG_VALUE_ACCESSOR, {useExisting: forwardRef(() => MyInputComponent), multi: true});

@Component({
  (...)
  providers: [ MY_VALUE_ACCESSOR ]
})
export class MyInputComponent extends DefaultValueAccessor {
  onChange = (_) => {};
  onTouched = () => {};

  writeValue(value:any):void {
    if (value!=null) {
      super.writeValue(value.toString());
    }
  }

  // call when your internal input is updated
  doOnChange(val) {
    this.onChange(val);
  }
}

有关更多详细信息,请参见本文(“与NgModel兼容的组件”一节):

另请参阅以下问题:

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类常见问题

Angular2组件@Input双向绑定

来自分类Dev

Angular2组件模板与视图模板

来自分类Dev

如何将TimeLineMax导入我的angular2组件?

来自分类Dev

以编程方式插入不同的Angular2组件

来自分类Dev

如何在控制台中访问Angular2组件特定的数据?

来自分类Dev

如何使用ng2-dragula拖放到多个Angular2组件

来自分类Dev

Angular2组件是单向绑定还是输入?

来自分类Dev

如何在Angular2组件中访问codemirror文本区域值?

来自分类Dev

基于canvas的Angular2组件:如何在其中绘制?

来自分类Dev

如何在angular2组件中导入npm包?

来自分类Dev

CodeMirror作为Angular2组件

来自分类Dev

如何动态创建引导模态作为Angular2组件?

来自分类Dev

HTML代码形式Angular2组件属性

来自分类Dev

尝试在angular2组件中使用exportAs

来自分类Dev

使用javascript协调angular2组件

来自分类Dev

Angular2组件-动态内联样式

来自分类Dev

获取传递到Angular2组件的数据

来自分类Dev

如何在angular2组件中访问全局js变量

来自分类Dev

如何使angular2组件ng无效

来自分类Dev

Angular2组件::按类的ViewChild / ContentChild

来自分类Dev

测试使用setInterval或setTimeout的Angular2组件

来自分类Dev

如何npm发布带有单独的templateUrl html文件的Angular2组件?

来自分类Dev

Angular2组件构造函数未调用

来自分类Dev

CodeMirror作为Angular2组件

来自分类Dev

尝试在angular2组件中使用exportAs

来自分类Dev

使用javascript协调angular2组件

来自分类Dev

JS中的Angular2组件通信

来自分类Dev

向服务订阅多个Angular2组件

来自分类Dev

从VisJS Event调用Angular2组件函数