Я прочитал о статьях на angular6, 3 способа общения от ребенка к родителю. Если это неправильно, пожалуйста, продемонстрируйте, если это возможно
1) выходной излучатель
2) используя viewchild
3) Сервис общего доступа.
Так что здесь мне нужно понять, как передать представление от ребенка к родителю.
В приведенной ниже демонстрации создали форму в дочернем компоненте, когда форма дочернего компонента является действительной, что должно быть отражено в родительском компоненте. В этом демонстрационном примере, когда компоненты загружаются в ngafterViewInit, перехватывает дочернее значение представления, и оно работает, как и ожидалось, но когда что-то вводится, форма дочернего компонента действительна, кнопка включена в дочерней форме, те изменения не отражаются в родительском компоненте, который необходимо проверить, но он не работает должным образом. Кто-нибудь может дать лучший подход?
родительский компонент.html
<h1> Parent Component</h1>
<button class="btn btn-danger " disabled="{{check}}">CheckParentEnable</button>
<div class="childComponent">
<app-child-component></app-child-component>
k2
</div>
parent component.html
import { Component, ViewChild, AfterViewInit } from '@angular/core';
import { ChildComponent } from './child/child.component';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements AfterViewInit {
public check: boolean;
@ViewChild(ChildComponent) myname: ChildComponent;
constructor() {
}
ngAfterViewInit() {
this.check = this.myname.loginForm.valid;
}
}
Child.component.html
<h4>childComponentArea<h4>
<h1>Welcome to child component</h1>
<form [formGroup]="loginForm">
<input type="email" formControlName="email" placeholder="Email" >
<button class="btn btn-danger" [disabled]="loginForm.invalid">Submit</button>
</form>
child.component.ts
import { Component, EventEmitter, Input,Output, OnInit } from '@angular/core';
import { FormControl, FormGroup,Validators } from '@angular/forms';
@Component({
selector: 'app-child-component',
templateUrl: './child.component.html',
styleUrls: ['./child.component.css']
})
export class ChildComponent implements OnInit {
loginForm:FormGroup;
name:string ='sahir';
constructor() { }
ngOnInit() {
this.createForm();
}
private createForm() {
this.loginForm = new FormGroup({
// tslint:disable-next-line
email: new FormControl('', [Validators.required])
});
}
k8
}
демо