我希望在按钮点击时显示一个元素,并隐藏另一个元素。以下是我的代码:
My Code
我能够显示子div,但我想在同一按钮点击上隐藏包含“show sub content”按钮的元素。请帮忙。
import { Component } from '@angular/core';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ]
})
export class AppComponent {
showMainContent: Boolean = true;
constructor() {}
ShowHideButton() {
this.showMainContent = this.showMainContent ? false : true;
}
}
在模板文件中
<div *ngIf="!showMainContent">
<button (click)="ShowHideButton()">Show Sub content</button>
My Main content
</div>
<div *ngIf="showMainContent">
Sub Content
<button (click)="ShowHideButton()">Show Main Content</button>
</div>
根据当前状态决定是显示还是隐藏。如果当前状态为true
,则将其更改为false
。如果当前状态为false
,则将其更改为true
。
ToggleButton() {
this.showSelected = !this.showSelected;
}
<div *ngIf="!showMainContent">
<button (click)="showMainContent=!showMainContent">Show Sub content</button>
My Main content
</div>
<div *ngIf="showMainContent">
Sub Content
<button (click)="showMainContent=!showMainContent">Show Main Content</button>
</div>
ShowButton() {
this.showSelected = !this.showSelected;
}
两个建议,
在声明变量时初始化,而不是在构造函数中赋值,
showSelected: boolean = false;
!
切换其值。 ToggleButton() {
this.showSelected = !this.showSelected;
}
不必写n次ngIf,你也可以写ngIf else:
<div *ngIf="isLoggedIn; else loggedOut">
Welcome back, friend.
</div>
<ng-template #loggedOut>
Please friend, login.
</ng-template>
或者使用 ngIf else then 语法:
<ng-container
*ngIf="isLoggedIn; then loggedIn; else loggedOut">
</ng-container>
<ng-template #loggedIn>
<div>
Welcome back, friend.
</div>
</ng-template>
<ng-template #loggedOut>
<div>
Please friend, login.
</div>
</ng-template>
选择取决于您需要执行多少个检查。