子コンポーネントが状態ドロップダウンを持つ親と子コンポーネントを作成しようとしています。誰かが、親コンポーネントの状態ドロップダウン値にどのようにアクセスできるかを理解するのに役立つことができますか?ここに私のサンプルコードです。Angular2:親と子コンポーネントの通信
@Component({
selector: 'state',
providers: [FormBuilder],
templateUrl: 'app/state.html',
directives: []
})
export class State {
statesDropDownValues = ['NJ', 'NY', 'PA', 'CA'];
stateForm: ControlGroup;
@Output()
stateChange:EventEmitter<string> = new EventEmitter(); // <----
constructor(fb: FormBuilder) {
this.stateForm = fb.group({
'state': ''
});
}
setStateValue() {
alert('State Selected: ' + this.stateForm.value.state);
stateChange.emit(this.stateForm.value.state);
}
}
親コンポーネントがが通知されるように、このイベントに登録することができます
/app/app.ts
import {Component} from 'angular2/core'
import {FORM_DIRECTIVES, FormBuilder, ControlGroup, Validators} from 'angular2/common'
import {State} from './state'
@Component({
selector: 'my-app',
providers: [FormBuilder],
templateUrl: 'app/app.html',
directives: [State]
})
export class App {
registrationForm: ControlGroup;
state: State;
constructor(fb: FormBuilder) {
this.registrationForm = fb.group({
'name': ['', Validators.required],
'email': ''
});
}
onSubmit() {
alert('Entered Name: ' + this.registrationForm.value.name);
alert('State Selected: '); //trying to alert the state selected in state component
}
}
/app/app.html
<div>
<h2>Registration Form</h2>
<form [ngFormModel]=registrationForm (ngSubmit)="onSubmit()">
<label>Name: </label>
<input type="text" ngControl="name">
<state></state>
<button [disabled]="!registrationForm.valid">Submit</button>
</form>
</div>
/app/state.ts
import {Component} from 'angular2/core'
import {FORM_DIRECTIVES, FormBuilder, ControlGroup} from 'angular2/common'
@Component({
selector: 'state',
providers: [FormBuilder],
templateUrl: 'app/state.html',
directives: []
})
export class State {
statesDropDownValues = ['NJ', 'NY', 'PA', 'CA'];
stateForm: ControlGroup
constructor(fb: FormBuilder) {
this.stateForm = fb.group({
'state': ''
});
}
setStateValue() {
alert('State Selected: ' + this.stateForm.value.state);
}
}
/app/state.html
<div>
<form [ngFormModel]="stateForm">
<label>State: </label>
<select ngControl="state" (change)="setStateValue()">
<option *ngFor="#s of statesDropDownValues"
[value]="s">{{s}}
</option>
</select>
</form>
</div>
また、私はあなたのState
コンポーネントに出力を定義し、それを使用してイベントをトリガしますここhttp://plnkr.co/edit/8tsm9sYeH8d8ulfqQKxY?p=info
子供のための - >親通信が見るhttps://angular.io/docs/ts/latest/cookbook/component-communication.html #!#子から親へ –
パーフェクト。このリンクを共有してくれてありがとう。私は、親子のコミュニケーションがどのように働くかを知っています。 – Rama