Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Angular2:父子组件通信大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试创建一个父子组件,其中子组件将有一个状态下拉.有人可以帮我理解如何访问父组件中的状态下拉值吗?这是我的示例代码.
/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,ControlGroup} from 'angular2/common'

@Component({
  SELEctor: 'state',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>

也是这里的龙头http://plnkr.co/edit/8tsm9sYeH8d8ulfqQKxY?p=info

我将输出定义到您的State组件并使用它触发事件:
@Component({
  SELEctor: 'state',directives: []
})
export class State {
  statesDropDownValues = ['NJ','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);
  }
}

父组件可以在此事件上注册通知更改:

<div>
  <h2>Registration Form</h2>
  <form [ngFormModel]=registrationForm (ngSubmit)="onSubmit()">
    <label>Name: </label>
    <input type="text" ngControl="name">
    <state (stateChangE)="handleNewState($event)"></state>
    <button [disabled]="!registrationForm.valid">Submit</button>
  </form>
</div>

$event包含新状态值的值.

编辑

这是一种在父组件中保存选定状态的方法

export class App {
  registrationForm: ControlGroup;

  state: String;

  constructor(fb: FormBuilder) {
    this.registrationForm = fb.group({
      'name': ['','email': ''
    });
  }

  handleNewState(statE) {
    this.state = state;
  }

  onSubmit() {
    alert('Entered Name: ' + this.registrationForm.value.Name);
    alert('State SELEcted: ' + this.statE);
  }
}

大佬总结

以上是大佬教程为你收集整理的Angular2:父子组件通信全部内容,希望文章能够帮你解决Angular2:父子组件通信所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。