У меня есть родительский компонент, который имеет две вкладки.Каждый TAB содержит один дочерний компонент.Каждый дочерний компонент имеет форму.
На родительском компоненте есть кнопка.То, что я хочу, как только две реактивные формы действительны, затем включите кнопку.Родительскому компоненту нравится
<Button (click)="Submit()" [disabled]="!isChild1FormValid || !isChild2FormValid">Submit</Button>
<kendo-tabstrip (tabSelect)="onTabSelect($event)">
<kendo-tabstrip-tab [title]="'Paris'" [selected]="true">
<ng-template kendoTabContent>
<app-child1 (isChild1FormValid)="trigger1($event)">
</app-child1>
</ng-template>
</kendo-tabstrip-tab>
<kendo-tabstrip-tab [title]="'New York City'">
<ng-template kendoTabContent>
<app-child2 (isChild2FormValid)="trigger2($event)">
</app-child2>
</ng-template>
</kendo-tabstrip-tab>
</kendo-tabstrip>
I ts-файл родителя.У нас есть методы.
trigger1(isValid: boolean) {
isChild1FormValid = isValid;
}
trigger2(isValid: boolean) {
isChild2FormValid = isValid;
}
В компоненте child1.
@Output() isChild1FormValid: EventEmitter<boolean> = new EventEmitter<boolean>();
In its `ngOnInit()`, we have
childForm1.statusChanges.subscribe(res => {
if(res == 'VALID') {
this.isChild1FormValid.emit(true);
}
});
}
Аналогично компоненту child2,
@Output() isChild2FormValid: EventEmitter<boolean> = new EventEmitter<boolean>();
In its `ngOnInit()`, we have
childForm2.statusChanges.subscribe(res => {
if(res == 'VALID') {
this.isChild2FormValid.emit(true);
}
});
}
Допустим, форма child1 и форма child2 имеют некоторыетекстовое поле, которое требуется. (Опущенный код здесь, поскольку он просто Validators.required
.
Теперь я набрал некоторый текст в элементах управления и установил точку останова в событии statusChanges. Теперь вопрос заключается в том, что метод child2 statusChanges не вызывается.Но child1 в порядке, проверка работает, я думаю, что это проблема TAB, когда я переключаю ее, она может перезагрузить ???
ОБНОВЛЕНО:
Не уверенпочему он работает в stackblitz , но не работает в моем приложении.