因此,我一直在阅读如何在Angular2中构建自定义Angular2,但我无法完全完成验证工作。我有一个正常的输入控件,我想把它封装在一个自定义组件中,这样我就可以这样做了:
<my-control name="something" [(ngModel)]="model.something" required></my-control>而不是每次都重复这样的话:
<div class="form-group has-feedback" [ngClass]="{'has-success': someInput.valid, 'has-error': someInput.invalid && someInput.dirty}">
<label class="control-label" for="someId">{{label || 'Some Input'}}</label>
<input type="test" class="form-control" id="someId" placeholder="Some Input" [ngModel]="value" (ngModel)="onChange($event)" name="someInput" required #someInput="ngModel" minlength="8"/>
<span class="glyphicon form-control-feedback" aria-hidden="true" [ngClass]="{'glyphicon-ok': someInput.valid, 'glyphicon-remove': someInput.invalid && someInput.dirty}"></span>
<div [hidden]="someInput.valid || someInput.pristine || !someInput.errors.required" class="text-danger">Some Input is required</div>
<div [hidden]="someInput.valid || someInput.pristine || !someInput.errors.minlength" class="text-danger">Some Input must be at least 8 characters</div>
</div>因此,我通过自定义组件实现了以下有关如何在线创建自定义组件的文章:
https://blog.thoughtram.io/angular/2016/07/27/custom-form-controls-in-angular-2.html
缺少的是将验证移出组件的能力,但允许自定义组件处理该验证的显示。因此,如果您想要的是允许验证由组件的用户指定,而不是让组件强制执行特定的验证(注意,某些验证是组件固有的,例如电子邮件地址组件将验证它是电子邮件,而不是用户指定的)。请注意,所需的是该客户组件的使用情况。
那么,如何在该组件的定义中获得对自定义组件的FormControl的引用?注意:我理解如何访问模板的FormControl实例中的输入字段,正如我上面的代码所演示的那样。我要求的是模板所在的自定义控件的FormControl实例。在我引用的文章中,它将是用于FormControl的CounterInputComponent。
发布于 2017-03-28 20:21:54
补充说,这似乎是可行的:
@ViewChild(NgModel) model: NgModel;然后,您可以通过以下方式到达您的FormControl:
this.model.controlhttps://stackoverflow.com/questions/43001940
复制相似问题