如何从两个组件“选择”中选择数据?

问题描述 投票:1回答:2

有两个“选择”组件。第一个组件显示年份,第二个组件显示事件名称。显示年份的组件具有数据类型“数字”(即,以这种形式“2018”输出数据)。并且具有事件名称的第二个组件必须与年份一致(仅在此处日期以“日期”的格式显示,即具有2018-09-13的格式)。因此,在选择年份时(从第一个组件“选择”),第二个组件应显示与日期匹配的信息。我根本没有想法如何去做。你能告诉我如何实现这个吗?

<div class="row">
  <div class="col-md-6">
    <div class="pull-left">
      <label>Reporting period</label>
      <label for="favcity">
        <select id="favcity" name="select" >
          <option *ngFor="let year of years" [value]="year.years">
            {{year.years}}
          </option>
        </select>
      </label>
    </div>
  </div>
  <div class="col-md-6 ">
    <div class="pull-right">
      <label>Type of event</label>
      <label for="favcity">
        <select id="favcity" name="select"  >
          <option *ngFor="let typeEvent of typeEvents" [value]="typeEvent.name">
            {{typeEvent.name}}
          </option>
        </select>
     </label>
    </div>
  </div>
</div>
angular
2个回答
1
投票

我想你应该在第一个选择组件和ngModel中添加click事件来存储年份值。

然后单击事件调用changeEventList函数和年份值。然后,changeEventList函数使用年份值过滤typeEvents。

第二个组件仅显示过滤的事件列表。

我在你的代码中添加了一些伪代码和注释。

<div class="row">
  <div class="col-md-6">
    <div class="pull-left">
      <label>Reporting period</label>
      <label for="favcity">
        <select id="favcity" name="select" (click)="changeEventList(selectedYear)" [(ngModel)]="selectedYear" >  // <= add year variable and click event when you choose any option values.
          <option *ngFor="let year of years" [value]="year.years">
            {{year.years}}
          </option>
        </select>
      </label>
    </div>
  </div>
  <div class="col-md-6 ">
    <div class="pull-right">
      <label>Type of event</label>
      <label for="favcity">
        <select id="favcity" name="select"  >
          <option *ngFor="let typeEvent of typeEvents" [value]="typeEvent.name">
            {{typeEvent.name}}
          </option>
        </select>
     </label>
    </div>
  </div>
</div>

在component.ts中

changeEventList(year){
    this.typeEvents = originalTypeEventList.filter(event => event.value.indexof(year) !== -1 )
}

1
投票

在这种情况下,我认为,我们应该使用(ngModelChange)事件代替(click)事件。

changeEventList(year){
    //you can filter the list of events  as you want 
}
<div class="row">
  <div class="col-md-6">
    <div class="pull-left">
      <label>Reporting period</label>
      <label for="favcity">
        <select id="favcity" name="select" (ngModelChange)="changeEventList(year)" [(ngModel)]="year" >  // <= add year variable and click event when you choose any option values.
          <option *ngFor="let year of years" [value]="year.years">
            {{year.years}}
          </option>
        </select>
      </label>
    </div>
  </div>
  <div class="col-md-6 ">
    <div class="pull-right">
      <label>Type of event</label>
      <label for="favcity">
        <select id="favcity" name="select"  >
          <option *ngFor="let typeEvent of typeEvents" [value]="typeEvent.name">
            {{typeEvent.name}}
          </option>
        </select>
     </label>
    </div>
  </div>
</div>
© www.soinside.com 2019 - 2024. All rights reserved.