Как получить доступ к значению FormControl в дочернем компоненте для родительского компонента?

В моем угловом приложении есть родительский компонент и несколько дочерних компонентов.

У меня есть кнопка "Отправить" в моем родительском компоненте, которая отключена OnInit. Его следует включать только тогда, когда установлен флажок в одном из дочерних компонентов. Если флажок не установлен, кнопка должна оставаться неактивной.

Вот мой родительский компонент HTML. Я пытаюсь отключить кнопку, если флажок не установлен:

<form [formGroup] = "emailForm" (ngSubmit) = "onSubmit()" class = "form-horizontal">
    <app-conditions (formReady) = "formInitialized('conditions', $event)"></app-conditions>
    <app-damage-details-one (formReady) = "formInitialized('damageDetailsOne', $event)"></app-damage-details-one>
    <app-damage-details-two (formReady) = "formInitialized('damageDetailsTwo', $event)"></app-damage-details-two>
    <app-personal-info></app-personal-info>
    <app-send></app-send>

    <card>
        <card-footer>
            <button button class = "axis-btn" type = "submit" title = "Confirm and send" data-kind = "primary"
[disabled] = "emailForm.conditions.acceptTerms.checked === false">Confirm and send</button>
        </card-footer>
    </card>
</form>

Флажок, на который я пытаюсь сослаться, расположен ниже (conditions.component.html).

условия приложения в моем Родителе относится к этому ребенку:

<div [formGroup] = "conditionsForm">
    <card>
        <card-body>
            <div class = "form-group">
                <label class = "control-label" for = "Accept">{{lblAccept} </label>
                <checkbox formControlName = "acceptTerms" cid = "Accept" heading = "Accept" name = "Accept" value = "Accept">
                </checkbox>
            </div>
        </card-body>
    </card>
</div>

Может кто-нибудь сказать мне, какие изменения мне нужно внести, чтобы я мог включать/отключать кнопку в родительском элементе в зависимости от того, установлен ли флажок в дочернем элементе или нет? Большое спасибо

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
1 082
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Используйте свойство Angular Output

Согласно официальному угловому документация:

The child component exposes an EventEmitter property with which it emits events when something happens. The parent binds to that event property and reacts to those events.

Ответ принят как подходящий

Я обновил свой родительский компонент следующим кодом:

<button axis-button class = "axis-btn" type = "submit" title = "Confirm and send" data-kind = "primary"
    [disabled] = "emailForm.controls['conditions'].controls['acceptTerms'].value === false">Confirm
    and send</button>

Кнопка родительского компонента теперь активна только тогда, когда установлен флажок дочернего компонента.

Ниже показано, что вам нужно в дочернем компоненте, чтобы зафиксировать, когда флажок установлен, и зафиксировать это в родительском компоненте.

Для получения дополнительной информации: https://angular.io/guide/component-interaction

  1)@Output() change: EventEmitter<string> = new EventEmitter<string>();

    2)Also add a method that emits change when checkboxchange event occurs
        OnCheckBoxChecked(value: string) {
                this.change.emit(value);
            }

Другие вопросы по теме