Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何在使用自定义输入表单时获得正确的表单状态?_Angular_Typescript_Validation - Fatal编程技术网

Angular 如何在使用自定义输入表单时获得正确的表单状态?

Angular 如何在使用自定义输入表单时获得正确的表单状态?,angular,typescript,validation,Angular,Typescript,Validation,我在组件中使用自定义输入,并将其添加到父组件中。除了表单.status之外,其他一切都可以正常工作。当有效/无效时,我无法获得正确的状态来切换按钮 我应该更换/修复的缺失部分在哪里 `<button mat-raised-button name="buttonName" [disabled]="!form.valid" [color]="'primary'"> </button>` input.component

我在组件中使用自定义
输入
,并将其添加到父组件中。除了
表单.status
之外,其他一切都可以正常工作。当有效/无效时,我无法获得正确的状态来切换
按钮

我应该更换/修复的缺失部分在哪里

`<button mat-raised-button 
         name="buttonName" 
        [disabled]="!form.valid" 
        [color]="'primary'">
 </button>`
input.component.html

<form #form="ngForm">
    <app-input [parentFormGroup]="form" 
           [label]="'e-mail'" 
           [type]="'text'"
           [name]="'User-Email'"
           [required]="true" 
           [pattern]="(email_regEx)">
    </app-input>
</form>
<input matInput 
       type="{{inputType}}" 
       name="{{inputName}}" 
       [(ngModel)]="model" 
       #ngForm="ngModel" 
       (ngModelChange)="modelChange.next($event)" 
       required="{{required}}" 
       pattern="{{regEx}}" 
       #{{inputName}}
>

这个问题已经解决了。我确实在父组件中添加了
ngDefaultControl
。因此,明确地说,在父组件中嵌入自定义输入应该是:


:

export class InputComponent implements OnInit {

    public parentFormGroup: FormGroup;

    @Input('label') inputLabel: string;
    @Input('name') inputName: string;
    @Input('type') inputType: string;
    @Input('pattern') regEx: string;
    @Input() required = true;

    @Input() model: any;
    @Output() modelChange = new EventEmitter();

    constructor() {
    }

    ngOnInit() {
    }

}
<form #form="ngForm">
    <app-input [parentFormGroup]="form" 
           [label]="'e-mail'" 
           [type]="'text'"
           [name]="'User-Email'"
           [required]="true" 
           [pattern]="(email_regEx)"
           ngDefaultControl>
    </app-input>
</form>