单击X按钮时,我的警报不会关闭。
我使用angular cli来创建一个新的应用程序。我按照说明here加载bootstrap:
shared_ptr<BusinessAccount> bA = dynamic_pointer_cast<BusinessAccount>(vec.at(0));
bA->getx();
然后我按照说明here加载ng-bootstrap:
npm install bootstrap@4.0.0-alpha.6
app.module.ts:
npm install --save @ng-bootstrap/ng-bootstrap
app.component.ts
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
@NgModule({
declarations: [
AppComponent,
NavComponent
],
imports: [
BrowserModule,
FormsModule,
HttpModule,
NgbModule.forRoot()
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
app.component.html
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'Testing...';
}
警报显示,并且样式正确,但是当我单击X时它不会关闭。其他组件正在工作(tabset,下拉列表)。我在app.component.ts中遗漏了什么吗?
答案 0 :(得分:8)
您必须在组件中定义close
事件方法。
<ngb-alert *ngIf="!closed" (close)="closed=true">Alert</ngb-alert>
import { Component } from '@angular/core';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'Testing...';
closed = false;
}
我希望这会对你有所帮助。
答案 1 :(得分:1)
这很晚了,但可能会帮助其他人寻找简单的可关闭警报。该组件包装了Devansh的解决方案:
import { Component, Input } from '@angular/core';
@Component({
selector: 'app-alert',
template: '<ngb-alert [type]="type" *ngIf="open" (close)="open=false"><ng-content></ng-content></ngb-alert>',
})
export class InfoPanelComponent {
public open = true;
@Input() type = 'info';
}
用法:
<app-alert>I'm a closeable alert!</app-alert>