Angular 2.0.1を介して実行しているプロジェクトにng2-bootstrapをインストールしました:
npm install ng2-bootstrap --save
私は次のようにプロジェクトを設定しました:
//systemjs.config.js
(function (global) {
System.config({
paths: {
// paths serve as alias
'npm:': 'node_modules/'
},
// map tells the System loader where to look for things
map: {
'moment': 'node_modules/moment/moment.js',
'ng2-bootstrap/ng2-bootstrap': 'node_modules/ng2-bootstrap/bundles/ng2-bootstrap.umd.js',
// our app is within the app folder
app: 'app',
// angular bundles
そして:
// app.module.ts
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpModule } from '@angular/http';
import { Ng2BootstrapModule } from 'ng2-bootstrap/ng2-bootstrap';
import { AppComponent } from './app.component';
import { ClientModule } from './client/client.module';
@NgModule({
imports: [
Ng2BootstrapModule
],
declarations: [
AppComponent
],
schemas: [ CUSTOM_ELEMENTS_SCHEMA ],
providers: [
NotificationService,
{ provide: LocationStrategy, useClass: HashLocationStrategy }
],
bootstrap: [AppComponent]
})
export class AppModule { }
そして:
// client.module.ts
import { Ng2BootstrapModule } from 'ng2-bootstrap';
@NgModule({
imports: [
Ng2BootstrapModule
],
declarations: [
],
providers: [
]
})
export class ClientModule { }
そして最後に:
// client-info.component.ts
import { Component, OnInit, OnDestroy } from '@angular/core';
import { AlertComponent } from 'ng2-bootstrap/ng2-bootstrap';
@Component({
selector: 'client-info',
template: `
<div >
<alert type="success">hello</alert>
</div>
`,
styleUrls: ['app/client/client.css']
})
export class ClientInfoComponent {
constructor() {
}
ngOnInit(): void { }
ngOnDestroy(): void {
}
}
しかし、サイトを閲覧すると、次のエラーが発生します。
未処理のPromise拒否:テンプレート解析エラー: 'alert'は既知の要素ではありません:1。'alert 'がAngularコンポーネントの場合、それがこのモジュールの一部であることを確認してください。2。 'alert'がWebコンポーネントの場合、このメッセージを抑制するために、このコンポーネントの> '@ NgModule.schemas'に "CUSTOM_ELEMENTS_SCHEMA"を追加します。( "
[エラー->]こんにちは
私は明らかにここで何か間違ったことをしていますが、何ですか?
App.module.tsは次のようになります。これは役に立ちます。
// app.module.ts
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { HttpModule } from '@angular/http';
import { Ng2BootstrapModule } from 'ng2-bootstrap/ng2-bootstrap';
import { ClientModule } from './client/client.module';
import { AlertModule } from 'ng2-bootstrap/components/alert';
@NgModule({
imports: [
Ng2BootstrapModule,
AlertModule
],
declarations: [
AppComponent
],
schemas: [ CUSTOM_ELEMENTS_SCHEMA ],
providers: [
NotificationService,
{ provide: LocationStrategy, useClass: HashLocationStrategy }
],
bootstrap: [AppComponent]
})
export class AppModule { }
そしてclient-info.component.tsをこれに変更します
// client-info.component.ts
import { Component, OnInit, OnDestroy } from '@angular/core';
import { AlertModule } from 'ng2-bootstrap/components/alert';
@Component({
selector: 'client-info',
template: `
<div >
<alert type="success">hello</alert>
</div>
`,
styleUrls: ['app/client/client.css']
})
export class ClientInfoComponent {
constructor() {
}
ngOnInit(): void { }
ngOnDestroy(): void {
}
}
Dilvish.johnの答えは、私のcomponent.tsに入れなければならなかったことを除いて、私のために働きました
import { AlertModule } from 'ng2-bootstrap/alert';
しかし、背後にあるロジックがわかりません。app.moduleで「ng2-bootstrap/ng-2bootstrap」をインポートし、コンポーネントで「ng2-bootstrap/alert」をインポートする必要があるのはなぜですか?
1- app.moduleにインポートしてから、すべてのコンポーネントでNg2BootstrapModuleを使用できませんか?したがって、AlertModuleは明示的に指定せずに使用できる必要があります
2-コンポーネントで明示的に行う必要がある場合は、import from 'Ng2BootstrapModule/alert'?
を使用しないでください。
ありがとうございました、