2017-03-17 13 views
0

現在、平均スタックを使用してWebアプリケーションを開発しており、ng-bootstrapのモーダル機能を使用していくつかの問題を抱えています。私が望むのは、ユーザーがnavbarのregisterオプションをクリックすると、レジスタモーダルを表示することです。私はまた、ナビゲーションバーのコンポーネントとレジスタの構成要素を持っており、これは私がこれまで他のコンポーネントからのコンテンツを含むNg-bootstrapモーダル

register.component.ts

import { Component, OnInit } from '@angular/core'; 
... 
import {NgbActiveModal} from '@ng-bootstrap/ng-bootstrap'; 

@Component({ 
    selector: 'app-register', 
    templateUrl: './register.component.html', 
    styleUrls: ['./register.component.css'] 
}) 
export class RegisterComponent implements OnInit { 
    ... 

    constructor(
    ..., 
    public registerModal: NgbActiveModal 
    ) { } 

navbar.component.ts

import { Component, OnInit } from '@angular/core'; 
... 
import {NgbCollapseModule} from '@ng-bootstrap/ng-bootstrap'; 
import {NgbModal} from '@ng-bootstrap/ng-bootstrap'; 
import {RegisterComponent} from '../register/register.component'; 

@Component({ 
    selector: 'app-navbar', 
    templateUrl: './navbar.component.html', 
    styleUrls: ['./navbar.component.css'] 
}) 
export class NavbarComponent implements OnInit { 
    public navCollapsed = true; 

    constructor(  
... 
    private regCom: RegisterComponent 
    private ngbModal: NgbModal 
    ) { } 

    ngOnInit() { 
    } 

    collapseOption(){ 
    this.navCollapsed = !this.navCollapsed; 
    return true; 
    } 

    openRegister(){ 
    const modalReg = this.ngbModal.open(this.regComp); 
    } 

} 
を持っているコードです

私はnavbarコンポーネントのレジスタコンポーネントをインポートしようとしましたが、MEANスタックを使用したプログラミングでは、この問題を解決する方法を手伝っていただければ、本当に感謝しています。あなたの助けを事前に

EXCEPTION: Error in ./AppComponent class AppComponent - inline template:0:0 caused by: No provider for RegisterComponent! 

ありがとう:表示されます

エラーはこれです!

+0

MEANスタックはそれの一部としての資格はありません、本当に関連して2、技術的角度ではありません。それにもかかわらず、これはクライアント側のプログラミングにのみ関連しています。 –

+0

これらのコンポーネントをapp.moduleにインポートしていますか?使用したコンポーネントは、app.moduleまたはfeatherモジュールでインポートする必要があります。 – ZouAlan

+0

はい、それらはすべてapp.moduleにインポートされます –

答えて

0

私はあなたがあなたの親コンポーネントあなたの親HTMLで

import { Input } from '@angular/core'; 
.... 
@Input('sample') childValue: string; 
.... 
getValue() { 
    console.log(childValue) 
} 

からの入力を取る、あなたは次の操作を行うことが必要だと思う:

<your-tag (click)="lgModal.show()"></your-tag> 
<your-modal #lgModal [sample]="your_data"></your-modal> 
2

あなたはあなたの中にコンポーネントを注入しようとしています(たとえそれが「プロバイダがありません」の理由で)コンストラクタを介してアプリケーションを呼び出すことができますが、その必要はありません。

constructor(  
... 
    private regCom: RegisterComponent // <-- you don't need this 
    private ngbModal: NgbModal 
    ) { } 

あなたはNgbModalクラスのopen方法に、ちょうどクラス自体、コンポーネントクラスのインスタンスを渡す必要はありません。

openRegister(){ 
    const modalReg = this.ngbModal.open(RegisterComponent); 
    } 
+0

それです!私はこれを行い、それ以上のエラーはありませんが、新しい問題があります。それはモーダルが開いているように見えますが、現れません。他のコンポーネントで使用しているカルーセルと同様のものが発生しています。しかし、これは私の最初の問題の解決策でした。ご協力いただきありがとうございます! –

+0

私は助けてくれるとうれしいです。その症状には多くの問題があるかもしれませんが、おそらくコンソールエラーから始めるべきです。 :) –

0

加えて、次のapp.moduleに追加する必要があります。

@NgModule({ 
    ..., 
    entryComponents: [ RegisterComponent ], 
    ... 
}) 
関連する問題