ngIf根据下拉值显示 - Angular 2

时间:2017-09-17 23:51:09

标签: angular dropdown ngif

我有一个包含几个不同组件的父组件。 在"项目"组件(子),我有一个用户可以从中选择任何可用项目的下拉列表。

当从下拉列表中选择任何项目时,我需要使用ngIf创建其他组件。

从这里可以看出,我已经将ngIf放在父组件中,用于我想要受影响的组件。

<div class="tab tab-style">

<ribbon-item style="width:10%;" [title]="'Load/Save Project'">
    <project></project>
</ribbon-item>
<div class="ribbon-divider"></div>

<ribbon-item style="width:12%;" [title]="'Project settings'" *ngIf="showComponent">
    <project-settings></project-settings>
</ribbon-item>
<div class="ribbon-divider"></div>

<ribbon-item style="width:23%;" [title]="'Environment'" *ngIf="showComponent">
    <environment></environment>
</ribbon-item>
<div class="ribbon-divider"></div>

<ribbon-item class="pd-width" [title]="'Project dates'" *ngIf="showComponent">
    <project-dates></project-dates>
</ribbon-item>
<div class="ribbon-divider"></div>

这是&#34;项目&#34;具有下拉列表的组件。

<div class="button-wrapper">
<select #projectSelect class="custom-select custom-select-project" (change)="loadProject(projectSelect.value)">
    <option selected disabled>Open projects</option>
    <option *ngFor="let project of projects" [value]=project.id>{{project.name}}</option>
</select>

<button class="btn-main" (click)="createNewProject()">New project</button>
<button class="btn-main">Save project</button> 
<button class="btn-main">Save as</button>

如何检查用户何时选择任何项目,然后在父项中显示其他组件。

1 个答案:

答案 0 :(得分:3)

您可以使用项目组件的输出。 流程将如下定义:

步骤-1。将项目组件的父组件更改为:

 `<project (projectSelected) = "projectSelected($event)"></Project>`

步骤2:在项目组件中将输出变量定义为:

@Output() projectSelected: EventEmitter<number> = new EventEmitter<number>();

步骤3:在loadProject中添加以下行:

this.projectSelected.emit(id); // selected value from dropdown

步骤4:在父组件定义的函数中:

projectSelected(projectId) {
 this.showComponent = true;
}