ng-bootstrap警报不会关闭

时间:2017-05-12 17:49:59

标签: ng-bootstrap

单击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中遗漏了什么吗?

2 个答案:

答案 0 :(得分:8)

您必须在组件中定义close事件方法。

HTML:

<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>