我有一个包含几个不同组件的父组件。 在"项目"组件(子),我有一个用户可以从中选择任何可用项目的下拉列表。
当从下拉列表中选择任何项目时,我需要使用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>
如何检查用户何时选择任何项目,然后在父项中显示其他组件。
答案 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;
}